Ticket #12456: 12456_osx_lion_noise.patch

File 12456_osx_lion_noise.patch, 5.9 KB (added by Jeroen Demeyer, 11 years ago)
  • sage/matrix/matrix2.pyx

    # HG changeset patch
    # User Jeroen Demeyer <jdemeyer@cage.ugent.be>
    # Date 1328612056 28800
    # Node ID 312f1dde57f8feeddfa1aab7d62a254a4ee3f575
    # Parent  5e95973d5daea26e65288adde93143cde628c7b4
    Fix numerical noise for OS X 10.7 Lion
    
    diff --git a/sage/matrix/matrix2.pyx b/sage/matrix/matrix2.pyx
    a b  
    79817981            ...                    [-0.2913 + 0.8057*I,  0.8321 + 0.8170*I, -0.6744 + 0.9248*I],
    79827982            ...                    [ 0.2554 + 0.3517*I, -0.4454 - 0.1715*I,  0.8325 - 0.6282*I]])
    79837983            sage: G, M = A.gram_schmidt()
    7984             sage: G.round(6)
     7984            sage: G.round(6)  # random signs
    79857985            [-0.422243 - 0.490087*I  0.566698 - 0.097416*I -0.500882 + 0.002251*I]
    79867986            [-0.057002 - 0.495035*I  -0.35059 - 0.625323*I  0.255514 - 0.415284*I]
    79877987            [ 0.394105 - 0.421778*I -0.392266 - 0.039345*I  -0.352905 + 0.62195*I]
    7988             sage: M.round(6).zero_at(10^-6)
     7988            sage: M.round(6)  # random
    79897989            [             -1.528503                      0                      0]
    79907990            [  0.459974 - 0.40061*I              -1.741233                      0]
    79917991            [-0.934304 + 0.148868*I   0.54833 + 0.073202*I              -0.550725]
     
    79937993            [0 0 0]
    79947994            [0 0 0]
    79957995            [0 0 0]
    7996             sage: (G*G.conjugate().transpose()).zero_at(10^-12)
     7996            sage: (G*G.conjugate_transpose()).zero_at(10^-12)
    79977997            [1.0   0   0]
    79987998            [  0 1.0   0]
    79997999            [  0   0 1.0]
     
    80298029            2
    80308030            sage: B = matrix(RDF, entries)
    80318031            sage: G, M = B.gram_schmidt()
    8032             sage: G.round(6).zero_at(10^-6)
     8032            sage: G.round(6)  # random signs
    80338033            [-0.408248 -0.408248 -0.816497]
    8034             [ 0.707107 -0.707107       0.0]
     8034            [ 0.707107 -0.707107      -0.0]
    80358035            [ -0.57735  -0.57735   0.57735]
    8036             sage: M.round(10).zero_at(10^-10)
     8036            sage: M.round(10)  # random
    80378037            [-2.4494897428           0.0           0.0]
    80388038            [-3.6742346142  0.7071067812           0.0]
    80398039            [-4.8989794856  1.4142135624           0.0]
     8040            sage: (A - M*G).zero_at(1e-14)
     8041            [0.0 0.0 0.0]
     8042            [0.0 0.0 0.0]
     8043            [0.0 0.0 0.0]
     8044            sage: (G*G.transpose()).zero_at(1e-14)
     8045            [1.0 0.0 0.0]
     8046            [0.0 1.0 0.0]
     8047            [0.0 0.0 1.0]
    80408048
    80418049        Exact Rings, Orthonormalization:
    80428050
  • sage/matrix/matrix_double_dense.pyx

    diff --git a/sage/matrix/matrix_double_dense.pyx b/sage/matrix/matrix_double_dense.pyx
    a b  
    11741174            [0.0 0.0 1.0 0.0 0.0]
    11751175            [0.0 0.0 0.0 1.0 0.0]
    11761176            [0.0 1.0 0.0 0.0 0.0]
    1177             sage: L
     1177            sage: L.zero_at(0)   # Use zero_at(0) to get rid of signed zeros
    11781178            [ 1.0  0.0  0.0  0.0  0.0]
    11791179            [ 0.0  1.0  0.0  0.0  0.0]
    11801180            [ 0.5  0.5  1.0  0.0  0.0]
    1181             [0.75 0.25 -0.0  1.0  0.0]
    1182             [0.25 0.75 -0.0 -0.0  1.0]
    1183             sage: U
     1181            [0.75 0.25  0.0  1.0  0.0]
     1182            [0.25 0.75  0.0  0.0  1.0]
     1183            sage: U.zero_at(0)   # Use zero_at(0) to get rid of signed zeros
    11841184            [24.0 25.0 26.0 27.0 28.0 29.0]
    11851185            [ 0.0  1.0  2.0  3.0  4.0  5.0]
    1186             [ 0.0  0.0 -0.0  0.0  0.0  0.0]
    1187             [ 0.0  0.0  0.0 -0.0 -0.0  0.0]
    1188             [ 0.0  0.0  0.0  0.0 -0.0  0.0]
     1186            [ 0.0  0.0  0.0  0.0  0.0  0.0]
     1187            [ 0.0  0.0  0.0  0.0  0.0  0.0]
     1188            [ 0.0  0.0  0.0  0.0  0.0  0.0]
    11891189            sage: P*A-L*U
    11901190            [0.0 0.0 0.0 0.0 0.0 0.0]
    11911191            [0.0 0.0 0.0 0.0 0.0 0.0]
     
    13781378            sage: e, V = spectrum[2]
    13791379            sage: v = V.basis()[0]
    13801380            sage: diff = (m*v).change_ring(CDF) - e*v
    1381             sage: abs(abs(diff)) < 1e-14
     1381            sage: abs(abs(diff)) < 3e-14
    13821382            True
    13831383
    13841384        TESTS::
     
    24892489        (indeed it should be the identity matrix), but with some
    24902490        imprecision.  We use this to illustrate that if the tolerance
    24912491        is set too small, then we can be too strict about the equality
    2492         of entries and achieve the wrong result.  ::
     2492        of entries and may achieve the wrong result (depending on
     2493        the system)::
    24932494
    24942495            sage: A = matrix(CDF, [[ 1 + I,  1 - 6*I, -1 - I],
    24952496            ...                    [-3 - I,     -4*I,     -2],
     
    24982499            sage: B=U*U.conjugate_transpose()
    24992500            sage: B.is_hermitian(algorithm='naive')
    25002501            True
    2501             sage: B.is_hermitian(algorithm='naive', tol=1.0e-17)
     2502            sage: B.is_hermitian(algorithm='naive', tol=1.0e-17)  # random
    25022503            False
    25032504            sage: B.is_hermitian(algorithm='naive', tol=1.0e-15)
    25042505            True
  • sage/rings/polynomial/polynomial_element.pyx

    diff --git a/sage/rings/polynomial/polynomial_element.pyx b/sage/rings/polynomial/polynomial_element.pyx
    a b  
    10251025            0.4*x^4 - 0.2*x^3 - 0.4*x^2 + 0.2*x + 0.8
    10261026            sage: poly = f * (x^2 + 1) % (x^5 + x + 1)
    10271027            sage: # Remove noisy zero terms:
    1028             sage: parent(poly)([ 0.0 if abs(c)<=1e-15 else c for c in poly.coeffs() ])
     1028            sage: parent(poly)([ 0.0 if abs(c)<=1e-14 else c for c in poly.coeffs() ])
    10291029            1.0
    10301030            sage: f = inverse_mod(x^3 - x + 1, x - 2); f
    10311031            0.142857142857
     
    10351035            -0.0319636125...*x^3 - 0.0383269759...*x^2 - 0.0463050900...*x + 0.346479687...
    10361036            sage: poly = f*g % m
    10371037            sage: # Remove noisy zero terms:
    1038             sage: parent(poly)([ 0.0 if abs(c)<=2.7e-15 else c for c in poly.coeffs() ])
     1038            sage: parent(poly)([ 0.0 if abs(c)<=1e-14 else c for c in poly.coeffs() ])
    10391039            1.0
    10401040
    10411041        ALGORITHM: Solve the system as + mt = 1, returning s as the inverse