Welcome to mirror list, hosted at ThFree Co, Russian Federation.

ChangeLog « ceres « third_party « libmv « extern - git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 2bd4206cf478d6b03c73c83f3e7f8928b0d9040f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
commit 33e01b9c5e1416fe29c55ac0332cdca21c053c83
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Wed Nov 27 10:24:03 2013 -0800

    Rename LinearSolverTerminationType enums.
    
    This increases clarity, drops redundant enums and makes things
    cleaner all around.
    
    Change-Id: I761f195ddf17ea6bd8e4e55bf5a72863660c4c3b

commit 068437eb89d495d905465544ccd442efef457b04
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Wed Nov 27 07:05:57 2013 -0800

    Pipe minimizer termination messages to Solver::Summary.
    
    All minimizer termination messages are now available as
    Solver::Summary::error.
    
    This is part of the ongoing refactoring or
    
    Change-Id: I4514c3c042645bbd1471bcde9bd3dbf81d9ee8b0

commit 89a592f410fb6f80c03dea84b6b9f1a10bea36c1
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Tue Nov 26 11:35:49 2013 -0800

    LinearSolver::Summary::status -> LinearSolver::Summary::message.
    
    And a bunch of minor lint cleanups as they showed up.
    
    Change-Id: I430a6b05710923c72daf6a5df4dfcd16fbf44b3a

commit b16e118b96c55451c0d8556f3c5b52ad36b69cac
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Mon Nov 25 05:47:43 2013 -0800

    Better error checking and reporting for linear solvers.
    
    A lot of error checking cruft has accumulated over the years
    in the various linear solvers. This change makes the error reporting
    more robust and consistent across the various solvers.
    
    Preconditioners are not covered by this change and will be the
    subject of a future change.
    
    Change-Id: Ibeb2572a1e67758953dde8d12e3abc6d1df9052d

commit 5794d41be2d8d6a67dcdfe607e66050f0ac04c55
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Mon Nov 25 13:37:02 2013 -0800

    Remove overzealous checks in Summary::FullReport.
    
    Thanks to sebi.koch@gmail.com for reporting this.
    
    Change-Id: I1ba9b375e5cf66639e292ba37b34a90446f13162

commit 40ef90304ac200bb948549e8e3748e487d27dc53
Author: Alex Stewart <alexs.mac@gmail.com>
Date:   Mon Nov 25 16:36:40 2013 +0000

    Adding VLOG output to line search.
    
    - Previously line search was sparse in terms of debug orientated VLOG
      output which made debugging failure cases difficult.
    
    Change-Id: Idfabf74d2b3f7b8256f79dff8c6b7fcdc2fcf4d3

commit 1284a5141426597f3ca1e29ae8548c9b4c43c9c1
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Sun Nov 24 15:09:43 2013 -0800

    Use explicit formula to solve quadratic polynomials.
    
    polynomial.cc implements a companion matrix base method for solving
    polynomials. This is both expensive and numerically sensitive.
    
    This change adds a quadratic equation solver. Instead of using the
    usual quadratic formula, it uses the formula suggested by BKP Horn
    for improved numerical stability.
    
    Change-Id: I476933ce010d81db992f1c580d2fb23a4457eb3e

commit a9334d67d7973c0f56e65f12ae897dd53504ef0d
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Wed Nov 20 10:12:23 2013 -0800

    Fix constant parameter handling in inner iterations.
    
    There was a bug in the way RemoveFixedBlocksFromProgram was working.
    It only removed the constant parameter blocks from the
    linear_solver_ordering, it was not even aware of the
    inner_iteration_ordering.
    
    This change fixes this bug. The code for RemoveFixedBlocksFromProgram
    is also cleaned up and made more readable and the test have been updated.
    
    Thanks to Mikael Persson for reporting this.
    
    Change-Id: I454fa89f9b6f4f6320b02d5235e6f322cc15ff51

commit 331ff090dcae7096cea50144047b71cab2d3e819
Author: Alex Stewart <alexs.mac@gmail.com>
Date:   Mon Nov 25 13:44:53 2013 +0000

    Downgrading log status of BFGS secant condition messages.
    
    - These messages were originally VLOG(2) and were mistakenly upgraded to
      WARNINGs when the tolerances were reduced.
    
    Change-Id: I89dee666a09bc82cfa89b793dc0907268662f95e

commit 9697a08a2bf29531671526b49df73bfbc0d7d237
Author: Alex Stewart <alexs.mac@gmail.com>
Date:   Sat Nov 23 10:03:37 2013 +0000

    Defining CERES_FOUND in addition to Ceres_FOUND in CeresConfig.
    
    - Previously we relied on FindPackage() to define Ceres_FOUND when
      find_package(Ceres) was called.
    - This is fine, but users might legitimately expect the variable to be
      CERES_FOUND given the form of CERES_INCLUDE_DIRS/LIBRARIES.
    - As there is an inconsistency in the CMake recommended names when
      FindPackage() is called in Module vs Config form, we now explicltly
      define both.
    
    Change-Id: I54bce9aa112b684d26b60a9ae4d11eb7925a6ee5

commit 66e15b41d80b155f333f099a0278d50312cdaa15
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Fri Nov 22 07:59:23 2013 -0800

    Lint cleanup from Jim Roseborough.
    
    Change-Id: I6ddbf5c3d66595d27f7967a309768e5f5dd7e1fd

commit 79bde35f29291cf464b59f3dc2dd9f1fa88776a9
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Thu Nov 21 21:33:51 2013 -0800

    SuiteSparse errors do not cause a fatal crash.
    
    1. Move LinearSolverTerminationType to ceres::internal.
    2. Add FATAL_ERROR as a new enum to LinearSolverTerminationType.
    3. Pipe SuiteSparse errors via a LinearSolverTerminationType so
       to distinguish between fatal and non-fatal errors.
    4. Update levenberg marquardt and dogleg strategies to deal
       with FATAL_ERROR.
    5. Update trust_region_minimizer to terminate when FATAL_ERROR
       is encountered.
    6. Remove SuiteSparse::SolveCholesky as it screws up the error
       handling.
    7. Fix all clients calling SuiteSparse to handle the result of
       SuiteSparse::Cholesky correctly.
    8. Remove fatal failures in SuiteSparse when symbolic factorization
       fails.
    9. Fix all clients of SuiteSparse to deal with null symbolic factors.
    
    This is a temporary fix to deal with some production problems. A more
    extensive cleanup and testing regime will be put in place in a
    subsequent CL.
    
    Change-Id: I1f60d539799dd95db7ecc340911e261fa4824f92

commit a674e0f8534ea6948f70a72fe9718e07b3d039ff
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Thu Nov 21 22:12:15 2013 -0800

    Fix corrector_test.cc.
    
    Fix two death tests dealing with the sign of the gradient.
    
    Change-Id: Ic91d54a64cc509307c94fce6d1fca083078936e2

commit a8006af3110e98d64fb369e958fc00ec88d771a3
Author: Alex Stewart <alexs.mac@gmail.com>
Date:   Wed Nov 20 19:56:06 2013 +0000

    Adding threads libraries to exported dependencies if using OpenMP.
    
    - Previously we were only adding the flags to the link flags for the
      Ceres project, which resulted in them not being exported. Thus
      projects importing Ceres (if using OpenMP) would have to manually
      specify them in addition to CERES_LIBRARIES.
    
    Change-Id: If0354cc07e84dbebfc870a8862e1a8ca64659791

commit 6c0d96424e2c27326757936a3738f9efc37c6c24
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Wed Nov 20 11:52:01 2013 -0800

    Minor documentation fix.
    
    Thanks to Satya Mallick.
    
    Change-Id: I556f1c141bf16739d54450351b0f29fd4ea40014

commit 7747bb0e6b0e54366933ed75c1bcafe6a1109c3d
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Wed Nov 20 11:29:22 2013 -0800

    Minor corrections to the documentation.
    
    Thanks to Satya Mallick for reporting these.
    
    Change-Id: Ia52e08a7e21d5247dc475cfbf10bf57265aa118f

commit 3fca2c4b2fae9abcaa9611f2bd3885ce6b11963b
Author: Alex Stewart <alexs.mac@gmail.com>
Date:   Mon Nov 18 10:26:49 2013 +0000

    Decreasing update threshold for BFGS as per L-BFGS.
    
    - Improves performance of BFGS on NIST, as per L-BFGS.
    - Adding explanation of origin and purpose of Secant condition
      tolerance check for Hessian update in (L)BFGS.
    
    Change-Id: If57b9957d31d8629c772c19a069e1e56e727b350

commit 54fcbf893852272ba2158d6a56572a2eb3ccc41f
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Tue Nov 19 10:12:05 2013 -0800

    Relax the requirements on loss functiond derivatives.
    
    We now require that the first derivative of the loss function
    be positive only if the second derivative is non-zero. This is
    because when the second derivative is non-positive, we do not use
    the second order correction suggested by BANS and instead use
    a simpler first order strategy which does not use a division by
    the gradient of the loss function.
    
    Change-Id: I3d65713f152611998e196ff389a7081acfdfd8c1

commit db98425b94c9eff9b125bf4a854545162e8c1aec
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Fri Nov 15 14:14:09 2013 -0800

    Small bugfix to logging.h from Scott Ettinger.
    
    Change-Id: Ie6d51e7883adf36c6fc7a78ff95afab6a78e488b

commit 4d0e626b55f36ab8f44a4acc8157b85cfecd4673
Author: Alex Stewart <alexs.mac@gmail.com>
Date:   Fri Nov 15 13:53:44 2013 +0000

    Fixing gflags HINTS variable names (adding missing “_DIR”).
    
    - The HINTS variables for gflags were incorrectly used as
      GFLAGS_[INCLUDE/LIBRARY]_HINTS when they should have been
      GFLAGS_[INCLUDE/LIBRARY]_DIR_HINTS as per the docs.
    - Also removing a completed TODO in the main CMakeLists.
    - Updating method of extracting current directory in CeresConfig.cmake
      to avoid use of CMAKE_CURRENT_LIST_DIR, which was not present in
      CMake =< v2.8.3.
    
    Change-Id: I42ae696e3b785febe48688d912f0f343e8947cb0

commit bf4c1b76e4926c738fc805e9ff4be0ed584d9eee
Author: Alex Stewart <alexs.mac@gmail.com>
Date:   Thu Nov 14 21:27:20 2013 +0000

    Decreasing threshold at which L-BFGS Hessian is updated.
    
    - Decreasing threshold at which L-BFGS Hessian is updated from 1e-10
      to 1e-14 results in a very significant improvement in NIST scores
      (43 -> 53 for CUBIC).
    - Adding comment in FindPolynomialRoots() explaining why behaviour
      is correct.
    
    Change-Id: If668e087e7a86d29659aa74e8528b192b604c841

commit 7124c3474cd201134c3a3350b46aca468f1edafa
Author: Alex Stewart <alexs.mac@gmail.com>
Date:   Thu Nov 7 16:10:02 2013 +0000

    Fixes for some line search bugs & corner cases.
    
    - Increase precision of numeric values output in error messages to
      allow for easier debugging.
    - Ensure termination after Wolfe search bracketing phase if bracket
      width has been shrunk to below tolerance.
    - Cleaned up return value for BracketingPhase(), now false iff
      optimisation should stop, true otherwise.
    - Fix bug whereby we would mark a step size as satisfying the Wolfe
      conditions when it did not due to numerical issues in the cost
      function.
    - Adding explanation of a subtlety in which a zoom could still be
      acceptably invoked with bracket_low.f > bracket_high.f.
    - Replacing hard check of a pre-condition of ZoomPhase() with a
      conditional return if not satisfied to address issue whereby a
      bracket could be incorrectly identified due to inconsistent values
      & gradients returned from the cost function.
    - Adding missing check for step size validity in line search minimizer.
    - Adding ToDebugString() for FunctionSample.
    
    Change-Id: Iad98e635749877f80c079ebad126bf022d82232d

commit 54fc9423673886ac9ed3fe329a80f07544aeea70
Author: Alex Stewart <alexs.mac@gmail.com>
Date:   Thu Nov 14 11:42:00 2013 +0000

    Removing incorrect specialisation of install dirs on Windows.
    
    - Previously on Windows the leaf include & lib install directories
      passed to CeresConfig.cmake.in when configured where capitalised on
      Windows.
    - This capitalisation was incorrect, as the actual paths used are
      specified in the install() statements and are always in the standard
      lower-case form.
    - This likely did not cause any issues previously as although NTFS is
      case sensitive, the Win32 API is not, and most applications access
      files through the Win32 API, and are thus not case-sensitive.
    
    Change-Id: I335b6e2d10a1c64f320c2a1a68eeda1b22344e73

commit fcbbb11e37386097b1427dc3aa89f264d6951ded
Author: Alex Stewart <alexs.mac@gmail.com>
Date:   Wed Nov 13 22:22:30 2013 +0000

    Ensure build paths for dependencies are searched in FindPackage(Ceres)
    
    - Append to hint locations used by FindPackage scripts for public
      dependencies (glog & Eigen) the locations of the dependencies when
      Ceres was built.
    - This means that the user should not have to supply them again when
      using find_package(Ceres) even if they are installed in a
      non-standard location.
    
    Change-Id: I9550de91025ba47f01f1ea3c3fefe80fe38d14ff

commit 7899e45d378f589a67ad8e042bf6a7cb7e15df00
Author: Alex Stewart <alexs.mac@gmail.com>
Date:   Wed Nov 13 21:08:27 2013 +0000

    Fixing a documentation typo, DIRS -> DIR in HINTS variables.
    
    Change-Id: I42b75a5e0b8a451c3a43ab29d0c14856e4b86ab8

commit 1a041c35b780e60c3b497eb096b72ad20f47960e
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Tue Nov 12 14:17:52 2013 -0800

    Update to 1.8.0.
    
    Change-Id: Id42e594f03e3575d06e18c1ef66df64f43d86839

commit 36b26139296060511718b3ef0da03a52706db481
Author: Alex Stewart <alexs.mac@gmail.com>
Date:   Thu Nov 7 16:57:36 2013 +0000

    Fix ordering of ParseCommandLineFlags() & InitGoogleTest() for Windows.
    
    - On Windows gtest passes additional non-gflags command line flags
      for death-tests, to avoid gflags invoking an error for these flags
      InitGoogleTest() must be called before ParseCommandLineFlags() to
      handle and remove them before gflags parses the remaining flags.
    
    Change-Id: I0c705ecd3aa029b70a2589b592e6a2c192745c0e

commit 8c155d51fab099ee7bf64f4bdbfeda82881925a5
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Fri Nov 8 08:04:44 2013 -0800

    Speed up the application of robust loss functions.
    
    Since we added special handling for the case for rho[2] < 0,
    the bulk of CorrectJacobian is pointless in the common case.
    So add a simple one dimensional loop which rescales the Jacobian.
    This speeds up this method immensely.
    
    The robustification of a Jacobian gets speeded up by > 50%.
    
    Change-Id: I97c4e897ccbb5521c053e1fb931c5d0d32f542c7

commit 58792dc8ee0e4b56331f33f753f1b1932c5c2960
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Wed Nov 6 09:42:46 2013 -0800

    Update to 1.8.0rc2.
    
    Change-Id: Ifbf5312377bf1791a29aefd3edc3a765999c5824

commit af04d7f18740faf452e9171af530aa1bdead44bb
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Tue Nov 5 13:47:30 2013 -0800

    Remove DCHECK_GE checks from fixed_array.h
    
    This triggers -Wtype-limits warnings on comparisons
    which are always true, since the test being done is
    n >= 0, where n is of type size_t, which is always
    true.
    
    This causes problems when compiling Ceres on linux
    with miniglog.
    
    Change-Id: Ia1d1d1483e03469c71fde029b62ca6d84e9b27e0

commit b5be6b9c065a02158337ee7eacfdb8be811dec7f
Author: Alex Stewart <alexs.mac@gmail.com>
Date:   Tue Nov 5 13:10:27 2013 +0000

    Cleaning up messages output when SuiteSparse is not found.
    
    - Automatically generated failure message now provides more
      information as to which sub-modules are missing.
    
    Change-Id: I6eed94af49263540b8f87917b75c41b8f49658a0

commit 9ba0b352a282f08b1b6368a5690434407d7c81af
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Tue Nov 5 13:04:56 2013 -0800

    Lint and other cleanups from William Rucklidge
    
    Change-Id: I7fb23c2db85f0f121204560b79f1966f3d584431

commit 69bd65ff4368ce2841519f00ff48c5284c1743a3
Author: Alex Stewart <alexs.mac@gmail.com>
Date:   Mon Nov 4 23:01:14 2013 +0000

    Downgrading warning messages when optional deps are not found.
    
    - Now when find_package() is called for a dependency without the
      REQUIRED or QUIET qualifiers, we emit no priority (above STATUS, but
      below WARNING) messages and continue.
    
    Change-Id: I8cdeda7a8f6c91d45fb7f24fb366244c6c9b66e1

commit b0a8731fcdde31e6c37a54e8c1e1c00f853c0d5c
Author: Alex Stewart <alexs.mac@gmail.com>
Date:   Mon Nov 4 20:32:40 2013 +0000

    Removing duplicate SuiteSparse found message.
    
    - Also flipping ordering of variables in
      find_package_handle_standard_args() so that the automatically
      generated message prints the include directories, not TRUE.
    
    Change-Id: I2bf62eacd5c96f27152e9542b9a74651243a584e

commit 6fed9fe0de9d1737095c24e19ad8df9735b7e572
Author: Alex Stewart <alexs.mac@gmail.com>
Date:   Mon Nov 4 18:33:05 2013 +0000

    Fix FindPackage scripts to emit warnings, not errors if not found.
    
    - Previously we used message priority: SEND_ERROR when a package was
      not found and find_package() was called without QUIET or REQUIRED,
      which emits an error message, and prevents generation, but continues
      configuration.
    - The fact SEND_ERROR induces an error message was confusing for users
      as it implies that something bad has happened and they cannot
      continue, when in fact we were disabling the option in question
      and were thus able to continue, all they had to do was re-configure.
    
    - This commit also reorders the search lists for includes/libraries
      so that we always search user installed locations (e.g. /usr/local)
      before system installed locations.  Thus we will now always prefer
      a user install to a system install if both are available, which is
      likely to be the users desired intention.
    
    Change-Id: Ide84919f27d3373f31282f70c685720cd77a6723

commit cada337149cbc4b9e6f2bae14593b87ecf8f1a5c
Author: Alex Stewart <alexs.mac@gmail.com>
Date:   Mon Nov 4 18:08:24 2013 +0000

    Fixing CXSparse include directories statement.
    
    - Reported as issue #135:
      https://code.google.com/p/ceres-solver/issues/detail?id=135.
    - CXSPARSE_INCLUDE was the legacy include directory variable, since
      the buildsystem updates we now use the CMake standard:
      CXSPARSE_INCLUDE_DIRS.
    
    Change-Id: Iab0c2de14d524bb9e9da230bc574b5e6f09e1f31

commit c71085ed326239dc2d318d848ded9a99e4e3c107
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Thu Oct 31 13:56:38 2013 -0700

    Update to 1.8.0rc1.
    
    Change-Id: Iaa10fd5a20be2ef84aca0119306c44669d87cc5d

commit 88a703f44ff0d6d5d4601584fa77f5ce853025f4
Author: Petter Strandmark <petter.strandmark@gmail.com>
Date:   Thu Oct 31 21:13:48 2013 +0100

    Fix compilation in Visual C++ 2013.
    
    I had to fix the following things to make Ceres compile in 2013:
     * Not link to 'm' (GNU math library).
     * Excplicitly convert an std::ostream to bool.
     * Include <algorithm> for std::max.
    
    Change-Id: I3ff65413baf8711364360d46dd71fd553fa63e72

commit f06b9face5bfbbc2b338aa2460bee2298a3865c5
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Sun Oct 27 21:38:13 2013 -0700

    Add support for multiple visibility clustering algorithms.
    
    The original visibility based preconditioning paper and
    implementation only used the canonical views algorithm.
    
    This algorithm for large dense graphs can be particularly
    expensive. As its worst case complexity is cubic in size
    of the graph.
    
    Further, for many uses the SCHUR_JACOBI preconditioner
    was both effective enough while being cheap. It however
    suffers from a fatal flaw. If the camera parameter blocks
    are split between two or more parameter blocks, e.g,
    extrinsics and intrinsics. The preconditioner because
    it is block diagonal will not capture the interactions
    between them.
    
    Using CLUSTER_JACOBI or CLUSTER_TRIDIAGONAL will fix
    this problem but as mentioned above this can be quite
    expensive depending on the problem.
    
    This change extends the visibility based preconditioner
    to allow for multiple clustering algorithms. And adds
    a simple thresholded single linkage clustering algorithm
    which allows you to construct versions of CLUSTER_JACOBI
    and CLUSTER_TRIDIAGONAL preconditioners that are cheap
    to construct and are more effective than SCHUR_JACOBI.
    
    Currently the constants controlling the threshold above
    which edges are considered in the single linkage algorithm
    are not exposed. This would be done in a future change.
    
    Change-Id: I7ddc36790943f24b19c7f08b10694ae9a822f5c9

commit 5a161a2b9653489ee9040f054b24df971e6b9bbc
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Tue Oct 29 22:08:15 2013 -0700

    Template specializations for PartitionedMatrixView.
    
    This speeds up the matrix vector products in the
    IterativeSchurSolver by upto 40%.
    
    Change-Id: Ib5e8d77c7269cf5ffdd2d161893734bb6d38215d

commit e5ce1170bc9993085c81a788e16eb48f1b2fdb97
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Tue Oct 29 07:40:51 2013 -0700

    Minor bug fix to autodiff.h
    
    Change-Id: Ib41050a2f2ba1898c71ff19d74f8eca2496212c0

commit 9e9a7d6ca0e75727293f94452d602f02b56d10ba
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Tue Oct 29 06:54:44 2013 -0700

    Documentation update.
    
    Add documentation for the new methods added to Problem.
    Fix a bunch of ReST bugs.
    
    Change-Id: I8a79a84040cfa8a679cc5355baccbe6d69bc9e70

commit c6bafdd02c33ec0ccb705578d83e4f601ddeedea
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Mon Oct 28 19:38:08 2013 -0700

    Comments from Jim Roseborough.
    
    1. Fix the tolerance on the rotation matrix conversion test.
    2. Fix some out of date comments.
    
    Change-Id: I65e80da1f96d7b4d9ac0630ad8cb708c41739840

commit fda69b52130955479591e8f03f97b1cfceca369f
Author: Keir Mierle <mierle@gmail.com>
Date:   Thu Oct 10 00:25:24 2013 -0700

    Export the structure of a problem to the public API
    
    This adds three new public methods to ceres::Problem:
    
      Problem::GetResidualBlocks()
      Problem::GetParameterBlocksForResidualBlock()
      Problem::GetResidualBlocksForParameterBlock()
    
    These permit access to the underlying graph structure of the problem.
    
    Change-Id: I55a4c7f0e5f325f140cb4830e7a7070554594650

commit 63bcdffa7d188b8d8c5309a62c255ba33f061764
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Sun Oct 27 21:34:13 2013 -0700

    Add the 2_d_d SchurEliminator specialization.
    
    This occurs far too often in bundle adjustment problems to be ignored.
    
    Change-Id: Ib137f1566acf5fffa63e50a55fe8e78ea9eb1c14

commit 602096c91363a0b9384f887a15c82e2dac1fb923
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Sun Oct 27 05:09:38 2013 -0700

    Move CERES_HASH_NAMESPACE macros to collections_port.h
    
    Now that we have a clearer understanding of the naming rules
    there is no need for these macro definitions to be done in
    the cmake file.
    
    This cleans up the compilation command line.
    
    Change-Id: Idc8fc7a7c9376e021dc4790af66e599105351917

commit f6b67df54ad6daa7036f5b6619243f722d678892
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Fri Oct 25 06:24:19 2013 -0700

    Fix handling of unordered_map/unordered_set on OSX 10.9.0.
    
    Depending on the compiler + standard library combination,
    unordered_map/set may or may not be available. If available
    they maybe in the std or the std::tr1 namespaces.
    
    Apple switched to using libc++ with 10.9.0 which places
    unordered_map in std, breaking our assumptions about the
    platform.
    
    This change refactors our logic for dealing with the namespace
    switching, making it a three state thing rather than two. There
    are three defines now, CERES_NO_UNORDERED_MAP, CERES_STD_UNORDERED_MAP
    and CERES_TR1_UNORDERED_MAP. Earlier the first two were conflated
    into one, leading to the breakage.
    
    Change-Id: I904fe8c49529169bdefa9f2ee6d629e7eab0b855

commit 21d6a99fe68e99fa51db32d55f587b42ef9a476c
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Fri Oct 25 10:20:24 2013 -0700

    Fix AngleAxisToRotationMatrix near zero.
    
    The Taylor series approximation had its sign flipped and the
    tests did not catch it since we were switching exactly at zero,
    which was not getting triggered.
    
    This changes modifies the tolerance, adds a test that triggers
    and fixes the bug.
    
    Thanks to Michael Samples for reporting this.
    
    Change-Id: I6f92f6348e5d4421ffe194fba92c04285449484c

commit 0e2743e24d013b25109396cfa0d8d0f1e8e84964
Author: Sameer Agarwal <sameeragarwal@google.com>
Date:   Wed Oct 23 14:51:07 2013 -0700

    Add BlockRandomAccessDiagonalMatrix.
    
    This class is used in the SchurJacobiPreconditioner for
    storing the preconditioner matrix. Using it speeds up
    the computation of the preconditioner by ~15% due to
    the elimination of a hash table lookup.
    
    Change-Id: Iba2b34aad0d9eb9bcb7f6e6fad16aa416aac0d2a

commit 6a2bcaa1d55d38bc10d043f1458657caac2be7a7
Author: Alex Stewart <alexs.mac@gmail.com>
Date:   Wed Oct 23 14:06:44 2013 +0100

    Adding explicit link to libm for pure-C curve fitting example.
    
    - Any pure-C program #including <math.h> will need to link against
      libm, some compilers will let an indirect link slide (via Ceres in
      this case) but some won't.
    
    Change-Id: I6890702fa0d2c3fbb747f0f81fc3fa3631839de4