Skip to content
GitLab
    • Why GitLab
    • Pricing
    • Contact Sales
    • Explore
  • Why GitLab
  • Pricing
  • Contact Sales
  • Explore
  • Sign in
  • Get free trial
  • libeigenlibeigen
  • eigeneigen
  • Issues
  • #1480

Sparse routines do not properly support AD scalar types

Submitted by Brad Bell

Assigned to Nobody

Link to original bugzilla bug (#1480)
Version: 3.3 (current stable)

Description

Created attachment 799
Demonstrates problem using eigens AutoDiffScalar type.

In some cases Eigen drops entires from a sparse matrix that have value zero. For an example, see the attached program which demonstrates the problem using the unsupported AutoDiffScalar type.

In the context of AD, even though a value is zero, its derivative may be non-zero. CppAD has the notation of a value being identically zero, so that certain optimizations can be done in that case.

In the case where the scalar type was double, equal to zero and identically equal to zero would be the same, so any related optimizations would take place.

I would like to suggest that custom scalar type could define a function IdenticalZero(x) which would return true if the value is zero, and cannot changes in any way. Then Eigen would only drop entries that are Identicaly zero.

Attachment 799, "Demonstrates problem using eigens AutoDiffScalar type.":
eigen_ad.cpp

Edited Dec 05, 2019 by Eigen Bugzilla
Assignee
Assign to
Time tracking