Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JAX exp accuracy and correctness #44

Open
pearu opened this issue Sep 19, 2024 · 2 comments
Open

JAX exp accuracy and correctness #44

pearu opened this issue Sep 19, 2024 · 2 comments

Comments

@pearu
Copy link
Owner

pearu commented Sep 19, 2024

 -inf    ========================22111111=====================================11222222========================
  -3e35   ========================21111111111111111111111111111111111111111111112222222========================
  -3e32   ========================22111111111111111111111111111111111111111111111222222========================
  -3e29   ========================22211111=====================================11222222========================
  -3e26   ========================2211111=======================================1222222========================
  -3e23   ========================22111111111111111111111111111111111111111111111222222========================
  -3e20   ========================22111111=====================================11222222========================
  -3e17   ========================22111111111111111111111111111111111111111111111222222========================
  -3e14   ========================22211111=====================================11222222========================
  -3e11   ========================2111111=======================================1222222========================
  -2e8    ========================22111111======================================1222222========================
  -2e5    ========================22111111======================================1222222========================
  -2e2    ========================22111111======================================2222222========================
  -2e-1   ========================22111111====================================111222122========================
  -2e-4   ========================1111111=======================================111111E========================
  -2e-7   ========================1111111=======================================111111E========================
  -2e-10  ========================1111111=======================================111111EE=======================
  -2e-13  ========================1111111=======================================111111EE=======================
  -2e-16  ========================1111111=======================================111111EE=======================
  -2e-19  ========================1111111=======================================111111EE=======================
  -2e-22  ========================1111111=======================================111111EE=======================
  -2e-25  ========================1111111=======================================111111EE=======================
  -2e-28  ========================1111111=======================================111111EE=======================
  -2e-31  ========================1111111=======================================111111EE=======================
  -1e-34  ========================1111111=======================================111111EE=======================
  -1e-37  ========================1111111=======================================11111EEEEEEEEEEEEEEEEEEEEEEEEEE
  1e-37   ========================1111111=======================================111111EE=======================
  1e-34   ========================1111111=======================================111111EE=======================
  2e-31   ========================1111111=======================================111111EE=======================
  2e-28   ========================1111111=======================================111111EE=======================
  2e-25   ========================1111111=======================================111111EE=======================
  2e-22   ========================1111111=======================================111111EE=======================
  2e-19   ========================1111111=======================================111111EE=======================
  2e-16   ========================1111111=======================================111111EE=======================
  2e-13   ========================1111111=======================================111111EE=======================
  2e-10   ========================1111111=======================================111111E========================
  2e-7    ========================1111111=======================================111111E========================
  2e-4    ========================21111111=====================================11222222========================
  2e-1    ========================2211111======================================11222222========================
  3e2     ========================22211111111111111111111111111111111111111111111222222========================
  3e5     ========================22211111111111111111111111111111111111111111111222222========================
  3e8     ========================22111111=====================================12222221========================
  3e11    ========================22111111=====================================11222222========================
  3e14    ========================21111111=====================================12222221========================
  4e17    ========================21111111111111111111111111111111111111111111111222222========================
  4e20    ========================2211111======================================11222222========================
  4e23    ========================12211111======================================1222222========================
  4e26    ========================21111111111111111111111111111111111111111111111222222========================
  4e29    ========================21111111=====================================11222222========================
  5e32    ========================21111111111111111111111111111111111111111111112122222========================
  5e35    ========================22211111111111111111111111111111111111111111111222222========================
          -inf  -3e29 -2e20 -1e11 -1e2  -8e-8 -6e-1 -4e-2 -3e-3 1e-33 1e-24 2e-15 3e-6  4e3   5e12  8e21  1e31
ULP-difference z jax:exp(z) mpmath:exp(z) numpy:exp(z)
4294967296 (142606340-5.88902e-39j) (inf+nanj) (inf-infj) (inf-infj)
35992627 (3.0238094+5.900613e-39j) (20.5695+0j) (20.5695+1.2137266e-37j) (20.5695+1.2137266e-37j)
@pearu
Copy link
Owner Author

pearu commented Jan 3, 2025

Note that numpy real exp has minor accuracy issues (max ULP difference is 2):

test_unary[exp-functional_algorithms-cpu-float32-default] maximal ULP difference: 2
ULP difference == 0: 1997768
ULP difference == 1: 101612
ULP difference == 2: 1420

  -inf    =====================================================================================================     -4e35
  -4e35   =====================================================================================================     -4e32
  -4e32   =====================================================================================================     -5e29
  -5e29   =====================================================================================================     -5e26
  -5e26   =====================================================================================================     -6e23
  -6e23   =====================================================================================================     -7e20
  -7e20   =====================================================================================================     -8e17
  -8e17   =====================================================================================================     -9e14
  -9e14   =====================================================================================================     -1e12
  -1e12   =====================================================================================================     -1e9
  -1e9    =====================================================================================================     -1e6
  -1e6    =====================================================================================================     -1e3
  -1e3    =====================================11=1!!!!!!!!!!!!!!!!!!1!!!!!!!1!!!!!!!!!!!!!!!!!!!!!!!!1!1111!!1     -2
  -2      !!11!!!!!!!!111111111!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!     -2e-3
  -2e-3   !!!!!!!!!!!!!!!!!11!!!!!!!!!!!!!!!!!!!111111111111111111111111111111111111111111111111111111111111111     -2e-6
  -2e-6   1111111111=11111111=1==111111111111111=1111111==========11111========================================     -2e-9
  -2e-9   =====================================================================================================     -2e-12
  -2e-12  =====================================================================================================     -3e-15
  -3e-15  =====================================================================================================     -3e-18
  -3e-18  =====================================================================================================     -3e-21
  -3e-21  =====================================================================================================     -3e-24
  -3e-24  =====================================================================================================     -4e-27
  -4e-27  =====================================================================================================     -4e-30
  -4e-30  =====================================================================================================     -5e-33
  -5e-33  =====================================================================================================     -5e-36
  -5e-36  =====================================================================================================     -1e-45
  1e-45   =====================================================================================================     5e-36
  5e-36   =====================================================================================================     5e-33
  5e-33   =====================================================================================================     4e-30
  4e-30   =====================================================================================================     4e-27
  4e-27   =====================================================================================================     3e-24
  3e-24   =====================================================================================================     3e-21
  3e-21   =====================================================================================================     3e-18
  3e-18   =====================================================================================================     3e-15
  3e-15   =====================================================================================================     2e-12
  2e-12   =====================================================================================================     2e-9
  2e-9    ==================================================11111====11111111====111====11==1111=11=1=1111111=1     2e-6
  2e-6    11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111     2e-3
  2e-3    1111111111111111111111111111111111111111111111111111111111111111111111111111111!!!!!!!!!!!111111!!!!1     2
  2       11!!!!1!1!!!!1!!!!1!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!========================================     1e3
  1e3     =====================================================================================================     1e6
  1e6     =====================================================================================================     1e9
  1e9     =====================================================================================================     1e12
  1e12    =====================================================================================================     9e14
  9e14    =====================================================================================================     8e17
  8e17    =====================================================================================================     7e20
  7e20    =====================================================================================================     6e23
  6e23    =====================================================================================================     5e26
  5e26    =====================================================================================================     5e29
  5e29    =====================================================================================================     4e32
  4e32    =====================================================================================================     4e35
  4e35    =====================================================================================================     +inf
| ULP-difference |              x | algorithms:exp(x) | mpmath:exp(x) |  numpy:exp(x) |
| -------------- | -------------- | ----------------- | ------------- | ------------- |
|              2 |      -49.50678 |     3.1584872e-22 | 3.1584877e-22 | 3.1584872e-22 |
|              2 |     -18.345198 |     1.0784048e-08 |  1.078405e-08 | 1.0784048e-08 |
|              2 |      -6.545332 |      0.0014368069 |  0.0014368071 |  0.0014368069 |
|              2 |       -2.42406 |       0.088561304 |    0.08856132 |   0.088561304 |
|              2 |     -1.7291702 |        0.17743155 |    0.17743158 |    0.17743155 |
|              2 |     -1.4946591 |        0.22432505 |    0.22432508 |    0.22432505 |
|              2 |     -0.9062446 |        0.40403867 |    0.40403873 |    0.40403867 |
|              2 |   -0.025816776 |        0.97451353 |    0.97451365 |    0.97451353 |
|              2 | -0.00090255734 |        0.99909794 |     0.9990978 |    0.99909794 |
| <snip 33 rows> |            ... |               ... |           ... |           ... |
|              1 |  1.7248083e-06 |         1.0000018 |     1.0000017 |     1.0000018 |
|              1 |  5.3111755e-05 |          1.000053 |     1.0000532 |      1.000053 |
|              1 |    0.023119807 |         1.0233892 |     1.0233891 |     1.0233892 |
|              1 |      0.8132655 |         2.2552607 |     2.2552605 |     2.2552607 |
|              1 |      1.4031366 |         4.0679393 |     4.0679398 |     4.0679393 |
|              1 |       1.500971 |          4.486043 |     4.4860425 |      4.486043 |
|              1 |       2.171099 |          8.767915 |      8.767914 |      8.767915 |
|              1 |      2.5546677 |        12.8670225 |     12.867023 |    12.8670225 |
|              1 |      3.5271847 |          34.02803 |     34.028034 |      34.02803 |
|              1 |       4.992606 |         147.31985 |     147.31987 |     147.31985 |

that affects the accuracy of complex exp:

test_unary[exp-functional_algorithms-cpu-complex64-default] maximal ULP difference: 3
ULP difference == 0: 1902999
ULP difference == 1: 181123
ULP difference == 2: 16169
ULP difference == 3: 509

  -inf    ========================!!!!!!11=====================================1!!!!!!!========================
  -4e35   ========================!!!!!!1=======================================!!!!!!!========================
  -4e32   ========================!!!!!!1111111111111111111111111111111111111111!!!!!!!========================
  -5e29   ========================!!!!!!1======================================1!!!!!!!========================
  -5e26   ========================!!!!!!11======================================!!!!!!!========================
  -6e23   ========================!!!!!!1=======================================!!!!!!!========================
  -6e20   ========================!!!!!!11=====================================1!!!!!!!========================
  -7e17   ========================!!!!!!1=======================================!!!!!!!========================
  -8e14   ========================!!!!!!1111111111111111111111111111111111111111!!!!!!!========================
  -9e11   ========================!!!!!!1111111111111111111111111111111111111111!!!!!!!========================
  -9e8    ========================!!!!!!11======================================!!!!!!!========================
  -1e6    ========================!!!!!!1111111111111111111111111111111111111111!!!!!!!========================
  -1e3    ========================!!!!!!1111111111111111111111111111111111111111!!!!!!!========================
  -1      ========================!!!!!!11=====================================1!!!!!!!========================
  -1e-3   ========================!!!!!!111=====================================!!!!!1!========================
  -2e-6   ========================!!!1!11=======================================1!!!!1!========================
  -2e-9   ========================!!!!!!1=======================================1!!!!1!========================
  -2e-12  ========================!!!1!11=======================================1!!!!1!!=======================
  -2e-15  ========================!!!1!11=======================================1!!!!1!!=======================
  -2e-18  ========================!!!!!!1=======================================1!!!!1!!=======================
  -2e-21  ========================!!!!!11=======================================1!!!!1!!=======================
  -3e-24  ========================!!!!!11=======================================1!!!!1!!=======================
  -3e-27  ========================!!!!!!1=======================================1!!!!1!!=======================
  -3e-30  ========================!!!1111=======================================1!!!!1!!=======================
  -4e-33  ========================1!!1!!1=======================================1!!!!!!!=======================
  -4e-36  ========================1!!!!!1=======================================1!!!!11!=======================
  0       ========================1!!!!11=======================================1!!!!1!!=======================
  4e-36   ========================1!!!!!1=======================================1!!!!1!!=======================
  4e-33   ========================!!!1!11=======================================1!!!!1!!=======================
  3e-30   ========================1!!!!11=======================================1!!!!1!!=======================
  3e-27   ========================1!!!!!1=======================================1!!!!1!!=======================
  3e-24   ========================!!!!!11=======================================1!!!!1!!=======================
  3e-21   ========================!!!!!11=======================================1!!!!1!!=======================
  2e-18   ========================!!!!!!1=======================================1!!!!1!!=======================
  2e-15   ========================!!!!!11=======================================1!!!!!!!=======================
  2e-12   ========================!!!!!11=======================================1!!!!1!========================
  2e-9    ========================!1!!!!1=======================================1!!!!1!========================
  2e-6    ========================!!!!!!1=======================================!!!!!!!========================
  2e-3    ========================!!!!!!11======================================!!!!!!!========================
  2       ========================!!!!!!1111111111111111111111111111111111111111!!!!!!!========================
  1e3     ========================!!!!!!1111111111111111111111111111111111111111!!!!!!!========================
  1e6     ========================!!!!!!1======================================1!!!!!!!========================
  1e9     ========================!!!!!!11=====================================1!!!!!!!========================
  1e12    ========================!!!!!!11=====================================1!!!!!!!========================
  1e15    ========================!!!!!!11=====================================1!!!!!!!========================
  9e17    ========================!!!!!!1111111111111111111111111111111111111111!!!!!!!========================
  8e20    ========================!!!!!!1111111111111111111111111111111111111111!!!!!!!========================
  8e23    ========================!!!!!!11=====================================1!!!!!!!========================
  7e26    ========================!!!!!!1111111111111111111111111111111111111111!!!!!!!========================
  6e29    ========================!!!!!!1=======================================1!!!!!!========================
  6e32    ========================!!!!!!111111111111111111111111111111111111111=!!!!!!!========================
  5e35    ========================!!!!!!1111111111111111111111111111111111111111!!!!!!!========================
          -inf  -3e29 -2e20 -1e11 -1e2  -8e-8 -6e-1 -4e-2 -3e-3 1e-33 1e-24 2e-15 3e-6  4e3   5e12  8e21  1e31
``` | ULP-difference | z | algorithms:exp(z) | mpmath:exp(z) | numpy:exp(z) | | -------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | | 3 | (7.969992e-06-2.5074376e+17j) | (0.32435435+0.94594425j) | (0.32435432+0.9459441j) | (0.32435432+0.94594413j) | | 3 | (-37.61348-5.674385e+31j) | (3.7676234e-17+2.6744145e-17j) | (3.7676237e-17+2.674415e-17j) | (3.7676237e-17+2.6744149e-17j) | | 3 | (-0.19920714-5.3938703e+22j) | (0.6580332-0.48823792j) | (0.65803313-0.48823783j) | (0.6580332-0.48823786j) | | 3 | (0.037109375-1057564900000000j) | (-0.32847652+0.98445207j) | (-0.3284765+0.9844519j) | (-0.32847646+0.98445195j) | | 3 | (-0.19920714-1315799200j) | (-0.23648244+0.7845126j) | (-0.2364824+0.7845125j) | (-0.23648241+0.7845125j) | | 3 | (-37.61348-562.31213j) | (-4.6178254e-17-1.5221798e-18j) | (-4.6178258e-17-1.5221801e-18j) | (-4.6178258e-17-1.5221801e-18j) | | 3 | (28.809525-1609.9884j) | (252659190000-3239669700000j) | (252659240000-3239670000000j) | (252659240000-3239670000000j) | | 3 | (5.5767243e-05-6.13671e-18j) | (1.0000559-6.137053e-18j) | (1.0000558-6.137052e-18j) | (1.0000558-6.1370523e-18j) | | 3 | (5.5767243e-05-1.0889019e-35j) | (1.0000559-1.0889628e-35j) | (1.0000558-1.0889626e-35j) | (1.0000558-1.08896264e-35j) | | | ... | ... | ... | ... | | 3 | (116.7619+4.464897e-15j) | (inf+2.2848684e+36j) | (inf+2.284868e+36j) | (inf+2.2848681e+36j) | | 3 | (-0.19920714+57691.92j) | (0.7861858-0.23085883j) | (0.78618574-0.23085879j) | (0.78618574-0.23085879j) | | 3 | (-0.19920714+2.973419e+16j) | (0.81100607-0.11684648j) | (0.811006-0.11684646j) | (0.811006-0.11684647j) | | 3 | (-0.033325076+3.8906686e+27j) | (0.4860293+0.83624053j) | (0.4860292+0.8362404j) | (0.48602924+0.8362404j) | | 2 | (-0.033325076-4.0181524e-36j) | (0.9672242-3.886454e-36j) | (0.96722406-3.8864538e-36j) | (0.96722406-3.8864538e-36j) | | 2 | (0.005487351-2.7744386e-36j) | (1.0055023-2.7897044e-36j) | (1.0055025-2.7897048e-36j) | (1.0055025-2.7897048e-36j) | | 2 | (7.237707e-08+4.9878124e+34j) | (0.42298967+0.9061345j) | (0.4229897+0.9061346j) | (0.42298973+0.9061346j) | | 2 | (-0.033325076-3.580226e-33j) | (0.9672242-3.462881e-33j) | (0.96722406-3.4628807e-33j) | (0.96722406-3.4628807e-33j) | | 2 | (0.00011226109-4.0181524e-36j) | (1.0001122-4.018603e-36j) | (1.0001123-4.0186036e-36j) | (1.0001123-4.0186036e-36j) | | 2 | (7.237707e-08+1.0841676e+36j) | (0.22182454-0.97508657j) | (0.22182456-0.9750867j) | (0.22182457-0.9750867j) |

</details>

@pearu
Copy link
Owner Author

pearu commented Jan 3, 2025

With https://github.com/pearu/stablehlo/tree/pearu/exponential, JAX complex exp has the following accuracy patterns:

test_unary[exp-jax-cuda-complex64-default] maximal ULP difference: 3
ULP difference == 0: 1788889
ULP difference == 1: 301112
ULP difference == 2: 10720
ULP difference == 3: 79

  -inf    ========================!!2222211111111111111111111111111111111111111122222!!========================
  -4e35   ========================22222221111111111111111111111111111111111111112222222========================
  -4e32   ========================!2222221111111111111111111111111111111111111112222222========================
  -5e29   ========================!!!222211111111111111111111111111111111111111122222!2========================
  -5e26   ========================222222211111111111111111111111111111111111111122!2!22========================
  -6e23   ========================22222221111111111111111111111111111111111111112222222========================
  -6e20   ========================2!222221111111111111111111111111111111111111112222!22========================
  -7e17   ========================222222211111111111111111111111111111111111111122!2!22========================
  -8e14   ========================22222221111111111111111111111111111111111111112222!22========================
  -9e11   ========================!2222221111111111111111111111111111111111111112222!22========================
  -9e8    ========================2!222221111111111111111111111111111111111111112222!2!========================
  -1e6    ========================22221221111111111111111111111111111111111111112222!22========================
  -1e3    ========================222222211111111111111111111111111111111111111122!2!22========================
  -1      ========================22221221=====================================12222!22========================
  -1e-3   ========================222211211=====================================2221212========================
  -2e-6   ========================2211111=======================================1221211========================
  -2e-9   ========================2212111=======================================1221221========================
  -2e-12  ========================1211111=======================================12212112=======================
  -2e-15  ========================2211111=======================================12212122=======================
  -2e-18  ========================2211111=======================================12212112=======================
  -2e-21  ========================2211111=======================================12212212=======================
  -3e-24  ========================2211111=======================================11212122=======================
  -3e-27  ========================2212111=======================================12212212=======================
  -3e-30  ========================2211111=======================================11212112=======================
  -4e-33  ========================2211111=======================================12212112=======================
  -4e-36  ========================1212111=======================================12212212=======================
  0       ========================1212111=======================================11212112=======================
  4e-36   ========================2211111=======================================11212212=======================
  4e-33   ========================2211111=======================================12212122=======================
  3e-30   ========================1212111=======================================12212212=======================
  3e-27   ========================2211111=======================================11212112=======================
  3e-24   ========================2211111=======================================12212212=======================
  3e-21   ========================1211111=======================================12222112=======================
  2e-18   ========================2211111=======================================12212212=======================
  2e-15   ========================2211111=======================================11212121=======================
  2e-12   ========================2211111=======================================1221212========================
  2e-9    ========================2212111=======================================1221211========================
  2e-6    ========================2222112=======================================2222221========================
  2e-3    ========================222222211111111111111111111111111111111111111122!2!22========================
  2       ========================!!2222211111111111111111111111111111111111111122!22!2========================
  1e3     ========================!2222221111111111111111111111111111111111111112222!22========================
  1e6     ========================222222211111111111111111111111111111111111111122!2222========================
  1e9     ========================!!2222211111111111111111111111111111111111111122!2!22========================
  1e12    ========================22222221111111111111111111111111111111111111112222222========================
  1e15    ========================!22222211111111111111111111111111111111111111122!2222========================
  9e17    ========================!!2222211111111111111111111111111111111111111122!22!!========================
  8e20    ========================22222221111111111111111111111111111111111111112222!2!========================
  8e23    ========================22222221111111111111111111111111111111111111112222!22========================
  7e26    ========================!!222221111111111111111111111111111111111111112222!22========================
  6e29    ========================!222222111111111111111111111111111111111111111222!!22========================
  6e32    ========================22222221111111111111111111111111111111111111112222!22========================
  5e35    ========================!22222211111111111111111111111111111111111111122!2!22========================
          -inf  -3e29 -2e20 -1e11 -1e2  -8e-8 -6e-1 -4e-2 -3e-3 1e-33 1e-24 2e-15 3e-6  4e3   5e12  8e21  1e31
| ULP-difference |                             z |                    jax:exp(z) |                 mpmath:exp(z) |                   numpy:exp(z) |                      fa:exp(z) |
| -------------- | ----------------------------- | ----------------------------- | ----------------------------- | ------------------------------ | ------------------------------ |
|              3 |     (-6.592666-1.730916e+38j) | (0.0011426957+0.00075643405j) |  (0.0011426955+0.0007564339j) |   (0.0011426955+0.0007564339j) |   (0.0011426955+0.0007564339j) |
|              3 |    (1.7529762-5.8701166e+36j) |       (-4.2441926-3.9115202j) |       (-4.2441926-3.9115195j) |         (-4.244192-3.9115195j) |         (-4.244192-3.9115195j) |
|              3 |  (-0.11471754-2.1753397e+28j) |      (-0.77113014+0.4475946j) |     (-0.77113014+0.44759452j) |      (-0.77113014+0.44759452j) |        (-0.7711301+0.4475945j) |
|              3 |    (2.0119047-2.1753397e+28j) |       (-6.4670763+3.7537484j) |       (-6.4670763+3.7537477j) |        (-6.4670763+3.7537477j) |        (-6.4670763+3.7537477j) |
|              3 | (6.593977e-05-1.8873218e+26j) |        (0.88270557+0.470067j) |        (0.8827055+0.4700669j) |        (0.88270545+0.4700669j) |        (0.88270545+0.4700669j) |
|              3 |   (-0.23079781-7.623943e+18j) |     (-0.7932867-0.031200288j) |     (-0.7932866-0.031200282j) |      (-0.7932866-0.031200282j) |      (-0.7932866-0.031200282j) |
|              3 |     (0.06082589-56008360000j) |      (-0.22837341-1.0378857j) |      (-0.22837336-1.0378855j) |       (-0.22837336-1.0378855j) |       (-0.22837336-1.0378855j) |
|              3 |   (1.6121638e-05-6.9975e+17j) |        (0.6234617+0.7818747j) |      (0.62346166+0.78187454j) |        (0.6234616+0.78187454j) |        (0.6234616+0.78187454j) |
|              3 |      (-6.592666-39126405000j) | (-0.00012075244-0.001365051j) | (-0.00012075242-0.001365051j) | (-0.00012075242-0.0013650509j) | (-0.00012075242-0.0013650509j) |
| <snip 23 rows> |                           ... |                           ... |                           ... |                            ... |                            ... |
|              3 |        (0.06082589+1.007722j) |        (0.5672644+0.8986502j) |       (0.5672643+0.89865005j) |        (0.5672643+0.89865005j) |        (0.5672643+0.89865005j) |
|              3 |       (0.06082589+226719.14j) |      (-1.0462214+0.18649898j) |      (-1.0462213+0.18649894j) |       (-1.0462213+0.18649894j) |       (-1.0462213+0.18649894j) |
|              3 |      (-0.23079781+15.567568j) |    (-0.78608865+0.111094154j) |      (-0.7860886+0.11109413j) |       (-0.7860886+0.11109413j) |       (-0.7860886+0.11109414j) |
|              3 | (1.6121638e-05+132530420000j) |        (0.5480478+0.8364665j) |        (0.5480477+0.8364663j) |         (0.5480477+0.8364663j) |         (0.5480477+0.8364663j) |
|              3 |     (-0.23079781+1113126100j) |       (0.6351065+0.47635806j) |      (0.63510644+0.47635797j) |        (0.6351065+0.47635797j) |        (0.6351065+0.47635797j) |
|              3 | (-6.592666+1373684800000000j) |  (0.001366904-9.7566226e-05j) | (0.0013669039-9.7566204e-05j) |  (0.0013669039-9.7566204e-05j) |  (0.0013669039-9.7566204e-05j) |
|              3 |  (6.593977e-05+9.069797e+17j) |      (0.96936953+0.24587572j) |       (0.9693694+0.24587567j) |       (0.96936935+0.24587569j) |       (0.96936935+0.24587569j) |
|              3 |   (0.06082589+1.7902398e+34j) |        (0.87764966-0.599243j) |         (0.8776495-0.599243j) |         (0.8776495-0.5992429j) |         (0.8776495-0.5992429j) |
|              3 |   (0.06082589+1.6569307e+21j) |     (-0.87107146-0.60876566j) |       (-0.8710713-0.6087656j) |        (-0.8710713-0.6087656j) |        (-0.8710713-0.6087656j) |
|              3 |   (-0.11471754+6.870806e+26j) |        (0.76628196+0.455845j) |        (0.7662819+0.4558449j) |         (0.7662819+0.4558449j) |       (0.76628184+0.45584488j) |

test_unary[exp-jax-cpu-complex64-default] maximal ULP difference: 2
ULP difference == 0: 1966101
ULP difference == 1: 133662
ULP difference == 2: 1037

  -inf    ========================!!!11111111111111111111111111111111111111111111!!!!1!========================
  -4e35   ========================!!!1111======================================11!!!!!1========================
  -5e32   ========================1!11111111111111111111111111111111111111111111!!!!!!!========================
  -5e29   ========================1!111111======================================!!!!!!!========================
  -6e26   ========================11111111======================================1!!!!1!========================
  -6e23   ========================!!111111=====================================1!!!!!!!========================
  -8e20   ========================!!!11111======================================!!!!!!!========================
  -9e17   ========================!111111111111111111111111111111111111111111111!!!!!!!========================
  -1e15   ========================1!11111=======================================!!!!!!!========================
  -1e12   ========================1!11111=======================================1!!!!!!========================
  -1e9    ========================!!111111=====================================1!!!!!1!========================
  -1e6    ========================1!111111=====================================1!!!!!!!========================
  -2e3    ========================1!!11111=====================================1!!!!!!!========================
  -2      ========================1!111111======================================!!!!!!1========================
  -2e-3   ========================11111111=====================================111!!111========================
  -2e-6   ========================1111111=======================================1111111========================
  -3e-9   ========================1111111=======================================1111111========================
  -3e-12  ========================1111111=======================================1111111========================
  -3e-15  ========================1111111=======================================1111111========================
  -4e-18  ========================1111111=======================================1111111========================
  -4e-21  ========================1111111=======================================1111111========================
  -5e-24  ========================1111111=======================================1111111========================
  -5e-27  ========================1111111=======================================1111111========================
  -6e-30  ========================1111111=======================================1111111========================
  -7e-33  ========================1111111=======================================11111111=======================
  -8e-36  ========================1111111=======================================1111111!=======================
  0       ========================1111111=======================================11111111=======================
  8e-36   ========================1111111=======================================11111111=======================
  7e-33   ========================1111111=======================================1111111========================
  6e-30   ========================1111111=======================================1111111========================
  6e-27   ========================1111111=======================================1111111========================
  5e-24   ========================1111111=======================================1111111========================
  5e-21   ========================1111111=======================================1111111========================
  4e-18   ========================1111111=======================================111111!========================
  3e-15   ========================1111111=======================================1111111========================
  3e-12   ========================1111111=======================================1111111========================
  3e-9    ========================1111111=======================================1111111========================
  3e-6    ========================1!11111======================================1!1!!!!1========================
  2e-3    ========================!!111111=====================================1!!!!!!!========================
  2       ========================!!111111=====================================1!!!!!!!========================
  2e3     ========================1!11111111111111111111111111111111111111111111!!!!!!!========================
  2e6     ========================1!!11111111111111111111111111111111111111111111!!!!!!========================
  2e9     ========================!!!1111111111111111111111111111111111111111111!!!!!!!========================
  1e12    ========================!!11111111111111111111111111111111111111111111!!!!!!!========================
  1e15    ========================!!!1111======================================11!!!!1!========================
  1e18    ========================1!11111111111111111111111111111111111111111111!!!!!!!========================
  1e21    ========================1!11111111111111111111111111111111111111111111!!!!!!!========================
  9e23    ========================!!!1111111111111111111111111111111111111111111!!!!!!!========================
  8e26    ========================1!111111=====================================11!!!!1!========================
  7e29    ========================11!1111======================================1!!!!!1!========================
  6e32    ========================1!111111=====================================1!!!!!1!========================
  6e35    ========================!!!!111111111111111111111111111111111111111111!!!!!!!========================
          -inf  -3e29 -2e20 -2e11 -1e2  -1e-7 -1e-1 -8e-2 -6e-3 2e-33 3e-24 3e-15 4e-6  5e3   7e12  9e21  1e31
| ULP-difference |                                 z |                      jax:exp(z) |                    mpmath:exp(z) |                    numpy:exp(z) |                       fa:exp(z) |
| -------------- | --------------------------------- | ------------------------------- | -------------------------------- | ------------------------------- | ------------------------------- |
|              2 |        (-4.531219-3.7096408e+34j) |       (0.01005821+0.003843485j) |       (0.01005821+0.0038434844j) |       (0.01005821+0.003843485j) |     (0.010058209+0.0038434844j) |
|              2 |    (0.00023154606-2.9267323e+17j) |         (-0.9438046-0.3312042j) |         (-0.9438045-0.33120418j) |         (-0.9438046-0.3312042j) |         (-0.9438046-0.3312042j) |
|              2 |       (-0.33919722-395633500000j) |       (-0.61284715-0.36311063j) |          (-0.6128472-0.3631107j) |        (-0.6128472-0.36311066j) |       (-0.61284715-0.36311063j) |
|              2 |          (166.3492-7.044812e-37j) |            (inf-1.2371087e+36j) |            (inf-1.23710886e+36j) |            (inf-1.2371089e+36j) |            (inf-1.2371087e+36j) |
|              2 |         (114.92063+6.001205e-17j) |            (inf+4.8711848e+33j) |             (inf+4.8711842e+33j) |            (inf+4.8711842e+33j) |             (inf+4.871185e+33j) |
|              2 |    (-3.7621405+1717105900000000j) |     (0.023043672+0.0029674578j) |      (0.023043672+0.0029674582j) |     (0.023043672+0.0029674578j) |     (0.023043672+0.0029674578j) |
|              2 | (0.00020078628+1717105900000000j) |         (0.9920092+0.12774639j) |          (0.99200934+0.1277464j) |         (0.9920092+0.12774639j) |         (0.99200934+0.1277464j) |
|              2 |       (-11.131813-1.0420609e+35j) | (-3.779091e-06-1.41429255e-05j) | (-3.7790915e-06-1.41429255e-05j) | (-3.779091e-06-1.41429255e-05j) | (-3.779091e-06-1.41429255e-05j) |
|              2 |     (0.00020078628-5.260343e+20j) |        (-0.89161104+0.4532452j) |         (-0.8916111+0.45324525j) |        (-0.89161104+0.4532452j) |       (-0.89161116+0.45324525j) |
|              2 |        (24.444443-1.7374725e+38j) |     (-14455653000-38701380000j) |      (-14455655000-38701384000j) |     (-14455655000-38701384000j) |     (-14455655000-38701384000j) |
|              2 |            (-3.2586718-72.87861j) |     (-0.031240782+0.022396483j) |      (-0.031240785+0.022396483j) |     (-0.031240782+0.022396483j) |     (-0.031240782+0.022396483j) |
|              2 |      (-0.33919722-3.8158813e+20j) |         (-0.56284297-0.436622j) |        (-0.56284297-0.43662205j) |         (-0.562843-0.43662205j) |         (-0.56284297-0.436622j) |
|              2 |       (-0.8077304+2.4899542e+20j) |      (-0.44199267-0.058664523j) |       (-0.44199267-0.058664516j) |      (-0.44199267-0.058664523j) |      (-0.44199267-0.058664523j) |
|              2 |   (0.00020078628+1.06166706e+18j) |        (-0.998802-0.052877218j) |         (-0.9988021-0.05287722j) |        (-0.998802-0.052877218j) |       (-0.9988021-0.052877225j) |

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant