-
Notifications
You must be signed in to change notification settings - Fork 500
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
PR #20853: Enable stablehlo-complex-math-expander pass. #20876
Merged
Merged
+7
−0
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ab56339
to
1a33029
Compare
Imported from GitHub PR #20853 As in the title. Enabling stablehlo-complex-math-expander pass improves the accuracy of complex log_plus_one as follows. The accuracy pattern (obtained by running `functional_algorithms` test `test_accuracy` with JAX backend on CUDA arrays) before enabling the pass (legend: label `=` means ULP differences with respect to reference value is `0`, label `1` - ULP difference is `1`, etc, label `!` - ULP difference is more that `3`, `E` - ULP difference is more that `300`): ``` -inf 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112 -4e35 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112221 -4e32 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222121 -5e29 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112111211 -5e26 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112222111211 -6e23 11=11111111111111111111111111111111111111111111111111111111111111111111111111111111111111122111111111 -6e20 11=1==1111111111111===============================================================1111122122111111111 -7e17 11=1==111111111111111===========================================================111112222222111111111 -8e14 11=1==111=1111111111111111111111111111111111111111111111111111111111111111111111111122222122111111111 -9e11 11=1==111===11111111111111111111111111111111111111111111111111111111111111111111111221122122111111111 -9e8 11=1==111===1=111111111111111111111111111111111111111111111111111111111111111111111121112122111121211 -1e6 11=1==111===1=1=1111111111111111111111111111111111111111111111111111111111111222211121122122111121121 -1e3 11=1==111===1=1=1111111111111111111111111111111111111111111111111111111111112221111111121122111111211 -1 11=1==111===1=1=111111111!!!E!!111111111111111111111111111111111111111333!222222211121212122111111211 -1e-3 11=1==111===1=1=1111=11112222!!!!!111111111111111111111111111111111111222222211221111111211211111111= -2e-6 11=1==111===1=1=1111=1==1212222=1!!!!111111================1111111111=1112122121211111121122111111=11 -2e-9 11=1==111===1=1=1111=1===212222=====1!!!!11111========11111111111=====111212212121112211212211111111= -2e-12 11=1==111===1=1=1111=1===212122======1==!!!!!1111111111111111==1======111222212121112112212211=111=1= -2e-15 11=1==111===1=1=1111=1===212122=============!!!!!11111111=============11121221222111211221111111=1=1= -2e-18 11=1==111===1=1=1111=1===212222=================!!111=================11122221222111111111=111=1=1=1= -2e-21 11=1==111===1=1=1111=1===212122=================11111=================111212212121112111=1111==1=1=1= -3e-24 11=1==111===1=1=1111=1===211122===================1===================11121221212111111111=11==1=1=1= -3e-27 11=1==111===1=1=1111=1===212222=======================================111222212221111111===11==1=1=1= -3e-30 11=1==111===1=1=1111=1===211122=======================================111222212121111111===11==1=1=1= -4e-33 11=1==111===1=1=1111=1===212222=======================================111222211111111=11===11==1=1=1= -4e-36 11=1==111===1=1=1111=1===212221=======================================11122121==111=1=11===11==1=1=1= 0 11=1==111===1=1=1111=1===212221=======================================111222211=11==1=11===11==1=1=1= 4e-36 11=1==111===1=1=1111=1===212122=======================================111212212111111=11===11==1=1=1= 4e-33 11=1==111===1=1=1111=1===211122=======================================111212212111=11111===11==1=1=1= 3e-30 11=1==111===1=1=1111=1===212122=======================================111222212221111111===11==1=1=1= 3e-27 11=1==111===1=1=1111=1===212222===================1===================11122221222111111111=11==1=1=1= 3e-24 11=1==111===1=1=1111=1===211122==================111==================111222212121111111=1111==1=1=1= 3e-21 11=1==111===1=1=1111=1===212222================11!1111================11121221122111111121=111=1=1=1= 2e-18 11=1==111===1=1=1111=1===212122=============2!!!!11111111=============11122221222111121121111111=1=1= 2e-15 11=1==111===1=1=1111=1===211122=========1!!!!1111111111111111=========1112122121211112222122111111=1= 2e-12 11=1==111===1=1=1111=1===212122=====1!!!!111111========111111111======111222212121112112112211111111= 2e-9 11=1==111===1=1=1111=1==121222111!!!!111111================111111111111112222122211111212122111111=11 2e-6 11=1==111===1=1=1111=11112221!!!!!111111111111111111111111111111111111221222212211111221212211111111= 2e-3 11=1==111===1=1=111111111!!!!!3111111111111111111111111111111111111111333!222211211121121122111111111 2 11=1==111===1=1=1111111111111111111111111111111111111111111111111111111111122222111121112122111121121 1e3 11=1==111===1=1=1111111111111111111111111111111111111111111111111111111111111122211122112122111111111 1e6 11=1==111===1=111111111111111111111111111111111111111111111111111111111111111111221112121122111111211 1e9 11=1==111===1111111111111===================================================1111122221112122111111111 1e12 11=1==111=1111111111111=======================================================11111122222122111111211 1e15 11=1==11111111111111111111111111111111111111111111111111111111111111111111111111111111122122111111111 9e17 11=1==1111111111111===============================================================1111122122111111111 8e20 11=11111111111111111111111111111111111111111111111111111111111111111111111111111111111111222121121111 8e23 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112222111211 7e26 1111111111111===========================================================================1111122221111 6e29 11111111111===============================================================================11111222221 6e32 111111111===================================================================================111112211 5e35 1111111=======================================================================================1111112 -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 ``` <details> ``` | ULP-difference | z | jax:log1p(z) | mpmath:log1p(z) | numpy:log1p(z) | fa:log1p(z) | | -------------- | -------------------------------- | -------------------------------- | -------------------------------- | ------------------------------ | -------------------------------- | | 417 | (-1.4850477e-05-0.0054416545j) | (-4.456342e-08-0.005441682j) | (-4.4564903e-08-0.0054416815j) | (-5.9604645e-08-0.0054416815j) | (-4.4564903e-08-0.005441681j) | | 262 | (-4.604984e-27+9.5909554e-14j) | (-5.6626192e-30+9.5909554e-14j) | (-5.6627178e-30+9.5909554e-14j) | 9.5909554e-14j | (-5.6627178e-30+9.5909554e-14j) | | 205 | (-4.2529954e-19+9.2143404e-10j) | (-7.7920414e-22+9.2143404e-10j) | (-7.791938e-22+9.2143404e-10j) | 9.2143404e-10j | (-7.791938e-22+9.2143404e-10j) | | 196 | (-3.3057245e-07+0.00081537315j) | (1.8443131e-09+0.00081537326j) | (1.8442914e-09+0.00081537326j) | 0.00081537326j | (1.8442914e-09+0.00081537326j) | | 185 | (-2.2565159e-20-2.1264301e-10j) | (4.3367205e-23-2.1264301e-10j) | (4.3366622e-23-2.1264301e-10j) | -2.1264301e-10j | (4.3366622e-23-2.1264301e-10j) | | 117 | (-0.0012349789+0.049288128j) | (-1.9556726e-05+0.049309075j) | (-1.955694e-05+0.04930907j) | (-1.9610121e-05+0.04930907j) | (-1.955694e-05+0.04930907j) | | 110 | (-0.0034784595-0.08273122j) | (-5.018548e-05-0.08283005j) | (-5.018508e-05-0.08283005j) | (-5.018837e-05-0.08283006j) | (-5.018508e-05-0.08283006j) | | 105 | (-9.969826e-30+4.464897e-15j) | (-2.173442e-33+4.464897e-15j) | (-2.1734613e-33+4.464897e-15j) | 4.464897e-15j | (-2.1734613e-33+4.464897e-15j) | | 103 | (-2.1849506e-12-2.0837508e-06j) | (-1.3941756e-14-2.0837508e-06j) | (-1.3941843e-14-2.0837508e-06j) | -2.0837508e-06j | (-1.3941843e-14-2.0837508e-06j) | | ... | ... | ... | ... | ... | ... | | 8 | (-2.3963775e-36-2.2461159e-18j) | (1.261409e-37-2.2461159e-18j) | (1.2614081e-37-2.2461159e-18j) | -2.2461159e-18j | (1.2614081e-37-2.2461159e-18j) | | 8 | (-3.1043605e-12+2.4817625e-06j) | (-2.4787897e-14+2.4817625e-06j) | (-2.4787911e-14+2.4817625e-06j) | 2.4817625e-06j | (-2.4787911e-14+2.4817625e-06j) | | 7 | (-2.0593258e-30-1.9919841e-15j) | (-7.532549e-32-1.9919841e-15j) | (-7.532545e-32-1.9919841e-15j) | -1.9919841e-15j | (-7.532545e-32-1.9919841e-15j) | | 7 | (-1.542265e-12+1.7250827e-06j) | (-5.4309855e-14+1.7250827e-06j) | (-5.430983e-14+1.7250827e-06j) | 1.7250827e-06j | (-5.430983e-14+1.7250827e-06j) | | 6 | (-6.859575e-37-1.138099e-18j) | (-3.8322845e-38-1.138099e-18j) | (-3.8322828e-38-1.138099e-18j) | -1.138099e-18j | (-3.8322828e-38-1.138099e-18j) | | 5 | (0.0002259754-0.08273122j) | (0.0036349818-0.082524665j) | (0.003634983-0.08252467j) | (0.003634991-0.08252467j) | (0.0036349827-0.08252467j) | | 5 | (-5.2773154e-33+1.02234825e-16j) | (-5.1335675e-35+1.02234825e-16j) | (-5.1335646e-35+1.02234825e-16j) | 1.02234825e-16j | (-5.1335646e-35+1.02234825e-16j) | | 4 | (-3.2815045e-08-0.11343931j) | (0.0063931597-0.11295645j) | (0.006393158-0.112956434j) | (0.0063930997-0.11295644j) | (0.0063931583-0.11295645j) | | 4 | (-1.683874e-24-1.7716747e-12j) | (-1.1445849e-25-1.7716747e-12j) | (-1.1445844e-25-1.7716747e-12j) | -1.7716747e-12j | (-1.1445844e-25-1.7716747e-12j) | | 4 | (0.0002259754+0.51158303j) | (0.11641588+0.4727794j) | (0.11641591+0.47277942j) | (0.11641591+0.47277942j) | (0.116415925+0.47277942j) | ``` </details> and after enabling the pass: ``` -inf 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112 -4e35 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112221 -4e32 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222121 -5e29 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112111211 -5e26 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112222111211 -6e23 11=11111111111111111111111111111111111111111111111111111111111111111111111111111111111111122111111111 -6e20 11=1==1111111111111===============================================================1111122122111111111 -7e17 11=1==111111111111111===========================================================111112222222111111111 -8e14 11=1==111=1111111111111111111111111111111111111111111111111111111111111111111111111122222122111111111 -9e11 11=1==111===11111111111111111111111111111111111111111111111111111111111111111111111221122122111111111 -9e8 11=1==111===1=111111111111111111111111111111111111111111111111111111111111111111111121112122111121211 -1e6 11=1==111===1=1=1111111111111111111111111111111111111111111111111111111111111222211121122122111121121 -1e3 11=1==111===1=1=1111111111111111111111111111111111111111111111111111111111112221111111121122111111211 -1 11=1==111===1=1=111111111!222221111111111111111111111111111111111111111222222222211121212122111111211 -1e-3 11=1==111===1=1=1111=1111222222111111111111111111111111111111111111111112222211221111111211211111111= -2e-6 11=1==111===1=1=1111=1==12122221=====================================11112122121211111121122111111=11 -2e-9 11=1==111===1=1=1111=1==1212222=======================================111212212121112211212211111111= -2e-12 11=1==111===1=1=1111=1==1212122======1====1===============11===1======111222212121112112212211=111=1= -2e-15 11=1==111===1=1=1111=1==1212122=================1=====================11121221222111211221111111=1=1= -2e-18 11=1==111===1=1=1111=1==1212222=================11111=================11122221222111111111=111=1=1=1= -2e-21 11=1==111===1=1=1111=1==1212122==================111==================111212212121112111=1111==1=1=1= -3e-24 11=1==111===1=1=1111=1==1211122===================1===================11121221212111111111=11==1=1=1= -3e-27 11=1==111===1=1=1111=1==1212222=======================================111222212221111111===11==1=1=1= -3e-30 11=1==111===1=1=1111=1==1211122=======================================111222212121111111===11==1=1=1= -4e-33 11=1==111===1=1=1111=1==1212222=======================================111222211111111=11===11==1=1=1= -4e-36 11=1==111===1=1=1111=1==1212221=======================================11122121==111=1=11===11==1=1=1= 0 11=1==111===1=1=1111=1==1212221=======================================111222211=11==1=11===11==1=1=1= 4e-36 11=1==111===1=1=1111=1==1212122=======================================111212212111111=11===11==1=1=1= 4e-33 11=1==111===1=1=1111=1==1211122=======================================111212212111=11111===11==1=1=1= 3e-30 11=1==111===1=1=1111=1==1212122=======================================111222212221111111===11==1=1=1= 3e-27 11=1==111===1=1=1111=1==1212222===================1===================11122221222111111111=11==1=1=1= 3e-24 11=1==111===1=1=1111=1==1211122==================111==================111222212121111111=1111==1=1=1= 3e-21 11=1==111===1=1=1111=1==1212222==================111==================11121221122111111121=111=1=1=1= 2e-18 11=1==111===1=1=1111=1==1212122=======================================11122221222111121121111111=1=1= 2e-15 11=1==111===1=1=1111=1==1211122=======================================1112122121211112222122111111=1= 2e-12 11=1==111===1=1=1111=1==1212122=======================================111222212121112112112211111111= 2e-9 11=1==111===1=1=1111=1==12122211=====================================11112222122211111212122111111=11 2e-6 11=1==111===1=1=1111=1111222122111111111111111111111111111111111111111111222212211111221212211111111= 2e-3 11=1==111===1=1=1111111113222221111111111111111111111111111111111111111122222211211121121122111111111 2 11=1==111===1=1=1111111111111111111111111111111111111111111111111111111111122222111121112122111121121 1e3 11=1==111===1=1=1111111111111111111111111111111111111111111111111111111111111122211122112122111111111 1e6 11=1==111===1=111111111111111111111111111111111111111111111111111111111111111111221112121122111111211 1e9 11=1==111===1111111111111===================================================1111122221112122111111111 1e12 11=1==111=1111111111111=======================================================11111122222122111111211 1e15 11=1==11111111111111111111111111111111111111111111111111111111111111111111111111111111122122111111111 9e17 11=1==1111111111111===============================================================1111122122111111111 8e20 11=11111111111111111111111111111111111111111111111111111111111111111111111111111111111111222121121111 8e23 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112222111211 7e26 1111111111111===========================================================================1111122221111 6e29 11111111111===============================================================================11111222221 6e32 111111111===================================================================================111112211 5e35 1111111=======================================================================================1111112 -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 ``` <details> ``` | ULP-difference | z | jax:log1p(z) | mpmath:log1p(z) | numpy:log1p(z) | fa:log1p(z) | | -------------- | ------------------------ | ----------------------- | ----------------------- | ----------------------- | ----------------------- | | 4 | (-1.1209118-0.11343931j) | (-1.7969997-2.3880699j) | (-1.7970002-2.3880696j) | (-1.7970002-2.3880696j) | (-1.7969997-2.3880699j) | ``` </details> Copybara import of the project: -- 896c0f4 by Pearu Peterson <[email protected]>: Enable stable-complex-math-expander pass. Merging this change closes #20853 COPYBARA_INTEGRATE_REVIEW=#20853 from pearu:pearu/complex-math-expander 896c0f4 PiperOrigin-RevId: 709846266
1a33029
to
ccc23a9
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
PR #20853: Enable stablehlo-complex-math-expander pass.
Imported from GitHub PR #20853
As in the title.
Enabling stablehlo-complex-math-expander pass improves the accuracy of complex log_plus_one as follows. The accuracy pattern (obtained by running
functional_algorithms
testtest_accuracy
with JAX backend on CUDA arrays) before enabling the pass (legend: label=
means ULP differences with respect to reference value is0
, label1
- ULP difference is1
, etc, label!
- ULP difference is more that3
,E
- ULP difference is more that300
):and after enabling the pass:
--
896c0f4 by Pearu Peterson [email protected]:
Enable stable-complex-math-expander pass.
Merging this change closes #20853
FUTURE_COPYBARA_INTEGRATE_REVIEW=#20853 from pearu:pearu/complex-math-expander 896c0f4