Is this a bug in Maxima's trigrat function, or am I using it incorrectly? Sometimes trigrat transforms a real-valued expression into a non-equivalent non-real expression:
Maxima 5.45.1 https://maxima.sourceforge.io
using Lisp GNU Common Lisp (GCL) GCL 2.6.12
Distributed under the GNU Public License. See the file COPYING.
Dedicated to the memory of William Schelter.
The function bug_report() provides bug reporting information.
(%i1) sin(3*%pi/47) / sin(11*%pi/47);
3 %pi
sin(-----)
47
(%o1) -----------
11 %pi
sin(------)
47
(%i2) trigrat(%);
36 %pi 33 %pi 26 %pi 25 %pi
(%o2) - (%i (47 sin(------) - 47 sin(------) + 64 sin(------) + 30 sin(------)
47 47 47 47
24 %pi 23 %pi 22 %pi 14 %pi
+ 34 sin(------) + 30 sin(------) - 30 sin(------) + 47 sin(------)
47 47 47 47
11 %pi 36 %pi 33 %pi 26 %pi
- 47 sin(------)) + 47 cos(------) - 47 cos(------) + 64 cos(------)
47 47 47 47
25 %pi 24 %pi 23 %pi 22 %pi
+ 30 cos(------) + 34 cos(------) + 30 cos(------) - 30 cos(------)
47 47 47 47
14 %pi 11 %pi
+ 47 cos(------) - 47 cos(------))/47
47 47
(%i3) float(expand( [ %o1, %o2 ] ));
(%o3) [0.2969447218372046, 0.6540613196839474 - 2.703675666682938 %i]
I noticed this when evaluating the function described in the Math.SE question Primes for which sum of sine ratios is nearly always an integer. That function is defined by summing ratios of sines, and is real-valued, but sometimes trigrat can produce a non-real expression.
This issue may be rare, because I only noticed a changed value twice or thrice. (It took some time to find an example term triggering the error in a sum involving a two dozens of terms, to have a small example to post here.)
Apparently similar errors (different answers when numerically evaluating before vs. after trigrat) also occur when doing trigrat( sin(%pi * a/p) / sin(%pi * b/p) ) with the following values p, b, a:
p = 37, b = 9, 1 <= a <= 36
p = 37, b = 28, 1 <= a <= 36
p = 37, b = 16, a = 36
p = 37, b = 21, a = 36
p = 47, b = 11, 1 <= a <= 46
p = 47, b = 36, 1 <= a <= 46
p = 53, b = 13, a = 8
p = 53, b = 40, a = 8
p = 53, b = 15, a = 41
p = 53, b = 38, a = 41
p = 61, b = 23, a = 33
p = 61, b = 38, a = 33
p = 71, b = 24, a = 70
p = 71, b = 47, a = 70
p = 73, b = 25, 1 <= a <= 72
p = 73, b = 48, 1 <= a <= 72
p = 97, b = 6, a = 1
p = 97, b = 91, a = 1
The following similar simplification seems to work without errors:
(%i4) sin(3*%pi/47) / sin(13*%pi/47);
3 %pi
sin(-----)
47
(%o4) -----------
13 %pi
sin(------)
47
(%i5) trigrat(%);
42 %pi 31 %pi 26 %pi 21 %pi
(%o5) %i ((- sin(------)) + sin(------) - sin(------) + sin(------)
47 47 47 47
16 %pi 5 %pi 42 %pi 31 %pi 26 %pi
- sin(------) + sin(-----)) - cos(------) + cos(------) - cos(------)
47 47 47 47 47
21 %pi 16 %pi 5 %pi
+ cos(------) - cos(------) + cos(-----) - 1
47 47 47
(%i6) float(expand( [ %o4, %o5 ] ));
(%o6) [0.26083338200873, 0.2608333820087302 - 2.220446049250313E-16 %i]
(This is in Maxima 5.45.1 on Ubuntu 22.04. According to comments so far, the output for an earlier and a later version is different from mine and appears to be correct; so the issue may be specific to my version/hard to reproduce. Thanks to everyone for testing. I will probably self-answer later, based on my own testing.)
According to comments so far, the output for an earlier and a later version is different from mine, and appears to be correct. That means the issue may be specific to my version/hard to reproduce. Thanks to @RobertDodier and @StasSimonov for testing and suggestions. I will need to update the installation to a recent version.
Here I'm posting a self-answer with more detailed output from testing, possibly the code/observations will be useful to others.
I ran the following code (Ubuntu 22.04, Maxima 5.45.1 using GCL 2.6.12):
(%i1) for p : 2 thru 100 do (
if primep(p) then (
for a : 1 thru p - 1 do (
for b : 1 thru p - 1 do (
block( [w1, w2, dif],
w1 : sin(%pi * a / p) / sin(%pi * b / p),
w2 : trigrat(w1),
dif : float(abs(expand(w1 - w2))),
if dif > 10^-12 then (
print(p, a, b, "dif", dif, "w2", float(expand(w2)))))))));
The code evaluates sin(%pi * a / p) / sin(%pi * b / p) for different triples (p,a,b) where p is prime.
Below is the output I got. The part dif <value> is the absolute difference between the expected result w1 (a real number) and the actual result w2 (sometimes non-real complex number); for me it ranges between 0.01833641610281251 and 41.44681300477293.
It is interesting that in a couple of cases, dif appears to be meaningfully related to the input triple (p,a,b) (noticed this after looking at the continued fraction expansion):
37 1 9 dif 0.1081081081081079 ...: the value dif is likely an approximation of the rational 4/37 (the denominator equals p). Same for many other cases with p = 37.53 8 13 dif 0.075471698113207 ...: the value dif is likely an approximation of the rational 4/53 (the denominator equals p). Same for the line 53 8 40 dif 0.075471698113207 ....In other cases, dif also appears to depend primarily on p (the same value can be printed for different a, b), but I do not know how to explain specific numbers.
37 1 9 dif 0.1081081081081079 w2 0.1179745029455187 - 0.1080106990491546 %i
37 1 28 dif 0.1081081081081079 w2 0.1179745029455187 - 0.1080106990491546 %i
37 2 9 dif 0.1081081081081085 w2 0.2488306530827868 - 0.1080106990491551 %i
37 2 28 dif 0.1081081081081085 w2 0.2488306530827868 - 0.1080106990491551 %i
37 3 9 dif 0.1081081081081076 w2 0.3778939726626533 - 0.1072324794874456 %i
37 3 28 dif 0.1081081081081076 w2 0.3778939726626533 - 0.1072324794874456 %i
37 4 9 dif 0.1081081081081083 w2 0.5042345575100633 - 0.1056816474538043 %i
37 4 28 dif 0.1081081081081083 w2 0.5042345575100633 - 0.1056816474538043 %i
37 5 9 dif 0.1081081081081077 w2 0.6269421208161076 - 0.103369376728567 %i
37 5 28 dif 0.1081081081081077 w2 0.6269421208161076 - 0.103369376728567 %i
37 6 9 dif 0.1081081081081083 w2 0.7451325517753235 - 0.1003123272752988 %i
37 6 28 dif 0.1081081081081084 w2 0.7451325517753235 - 0.1003123272752988 %i
37 7 9 dif 0.1081081081081078 w2 0.8579542856243283 - 0.09653252520535788 %i
37 7 28 dif 0.1081081081081078 w2 0.8579542856243283 - 0.09653252520535788 %i
37 8 9 dif 0.1081081081081082 w2 0.9645944391854289 - 0.09205720407927778 %i
37 8 28 dif 0.1081081081081082 w2 0.9645944391854289 - 0.09205720407927778 %i
37 9 28 dif 0.1081081081081081 w2 1.064284667708571 - 0.0869186086883179 %i
37 10 9 dif 0.1081081081081079 w2 1.156306700812845 - 0.08115376273002428 %i
37 10 28 dif 0.108108108108108 w2 1.156306700812845 - 0.08115376273002428 %i
37 11 9 dif 0.1081081081081078 w2 1.239997517641055 - 0.07480420205162744 %i
37 11 28 dif 0.1081081081081077 w2 1.239997517641055 - 0.07480420205162744 %i
37 12 9 dif 0.108108108108108 w2 1.314754123940187 - 0.06791567538331184 %i
37 12 28 dif 0.1081081081081082 w2 1.314754123940187 - 0.06791567538331184 %i
37 13 9 dif 0.1081081081081077 w2 1.380037896648806 - 0.06053781471757852 %i
37 13 28 dif 0.1081081081081077 w2 1.380037896648806 - 0.06053781471757852 %i
37 14 9 dif 0.1081081081081084 w2 1.435378464688577 - 0.05272377770958147 %i
37 14 28 dif 0.1081081081081084 w2 1.435378464688577 - 0.05272377770958147 %i
37 15 9 dif 0.1081081081081077 w2 1.480377097998643 - 0.0445298646750266 %i
37 15 28 dif 0.1081081081081077 w2 1.480377097998643 - 0.0445298646750266 %i
37 16 9 dif 0.1081081081081082 w2 1.514709580394868 - 0.03601511294508697 %i
37 16 28 dif 0.1081081081081081 w2 1.514709580394868 - 0.03601511294508697 %i
37 17 9 dif 0.1081081081081078 w2 1.538128545554857 - 0.02724087150109504 %i
37 17 28 dif 0.1081081081081078 w2 1.538128545554857 - 0.02724087150109504 %i
37 18 9 dif 0.1081081081081079 w2 1.55046525929799 - 0.01827035895371342 %i
37 18 28 dif 0.1081081081081079 w2 1.55046525929799 - 0.01827035895371342 %i
37 19 9 dif 0.1081081081081076 w2 1.551630835319051 - 0.009168208051406463 %i
37 19 28 dif 0.1081081081081075 w2 1.551630835319051 - 0.009168208051406463 %i
37 20 9 dif 0.1081081081081078 w2 1.5416168756161 - 4.440892098500626E-16 %i
37 20 28 dif 0.1081081081081078 w2 1.5416168756161 - 4.440892098500626E-16 %i
37 21 9 dif 0.1081081081081084 w2 0.009168208051406724 %i + 1.520495530998268
37 21 28 dif 0.1081081081081085 w2 0.009168208051406724 %i + 1.520495530998268
37 22 9 dif 0.1081081081081074 w2 0.01827035895371304 %i + 1.488418981237516
37 22 28 dif 0.1081081081081073 w2 0.01827035895371304 %i + 1.488418981237516
37 23 9 dif 0.108108108108109 w2 0.02724087150109527 %i + 1.445618338609908
37 23 28 dif 0.108108108108109 w2 0.02724087150109527 %i + 1.445618338609908
37 24 9 dif 0.1081081081081071 w2 0.03601511294508669 %i + 1.392401982726345
37 24 28 dif 0.1081081081081071 w2 0.03601511294508669 %i + 1.392401982726345
37 25 9 dif 0.1081081081081091 w2 0.04452986467502701 %i + 1.329153338650425
37 25 28 dif 0.1081081081081091 w2 0.04452986467502701 %i + 1.329153338650425
37 26 9 dif 0.1081081081081066 w2 0.05272377770958134 %i + 1.256328114312046
37 26 28 dif 0.1081081081081066 w2 0.05272377770958134 %i + 1.256328114312046
37 27 9 dif 0.1081081081081077 w2 0.0605378147175778 %i + 1.17445101712136
37 27 28 dif 0.1081081081081077 w2 0.0605378147175778 %i + 1.17445101712136
37 28 9 dif 0.108108108108108 w2 0.0679156753833127 %i + 1.084111973439831
37 29 9 dif 0.1081081081081064 w2 0.07480420205162572 %i + 0.9859618781472985
37 29 28 dif 0.1081081081081064 w2 0.07480420205162572 %i + 0.9859618781472985
37 30 9 dif 0.1081081081081094 w2 0.08115376273002512 %i + 0.8807079049294535
37 30 28 dif 0.1081081081081094 w2 0.08115376273002512 %i + 0.8807079049294535
37 31 9 dif 0.1081081081081073 w2 0.0869186086883173 %i + 0.769108411075213
37 31 28 dif 0.1081081081081073 w2 0.0869186086883173 %i + 0.769108411075213
37 32 9 dif 0.1081081081081091 w2 0.09205720407927742 %i + 0.6519674734951
37 32 28 dif 0.1081081081081091 w2 0.09205720407927742 %i + 0.6519674734951
37 33 9 dif 0.1081081081081074 w2 0.09653252520535832 %i + 0.5301290953286522
37 33 28 dif 0.1081081081081074 w2 0.09653252520535832 %i + 0.5301290953286522
37 34 9 dif 0.1081081081081087 w2 0.1003123272752987 %i + 0.4044711248824836
37 34 28 dif 0.1081081081081087 w2 0.1003123272752987 %i + 0.4044711248824836
37 35 9 dif 0.01833641610281251 w2 0.2621672745242488 - 0.003863102758878911 %i
37 35 28 dif 0.01833641610281251 w2 0.2621672745242488 - 0.003863102758878911 %i
37 36 9 dif 0.1081081081081083 w2 0.1056816474538041 %i + 0.1453388784257213
37 36 16 dif 11.61292709049978 w2 (- 9.654553942553618 %i) - 6.366901994771712
37 36 21 dif 11.61292709049978 w2 (- 9.654553942553618 %i) - 6.366901994771712
37 36 28 dif 0.1081081081081083 w2 0.1056816474538041 %i + 0.1453388784257213
47 1 11 dif 2.727158663347452 w2 0.09313939616384992 - 2.727151072561762 %i
47 1 36 dif 2.727158663347452 w2 0.09313939616384992 - 2.727151072561762 %i
47 2 11 dif 2.727158663347452 w2 0.3744365201212535 - 2.721490788879889 %i
47 2 36 dif 2.727158663347452 w2 0.3744365201212535 - 2.721490788879889 %i
47 3 11 dif 2.727158663347452 w2 0.6540613196839474 - 2.703675666682938 %i
47 3 36 dif 2.727158663347452 w2 0.6540613196839474 - 2.703675666682938 %i
47 4 11 dif 2.727158663347452 w2 0.9307649226171324 - 2.673785272631326 %i
47 4 36 dif 2.727158663347452 w2 0.9307649226171324 - 2.673785272631326 %i
47 5 11 dif 2.727158663347453 w2 1.203311503459284 - 2.631953104480893 %i
47 5 36 dif 2.727158663347453 w2 1.203311503459284 - 2.631953104480893 %i
47 6 11 dif 2.727158663347453 w2 1.470483803018675 - 2.578365994849509 %i
47 6 36 dif 2.727158663347453 w2 1.470483803018675 - 2.578365994849509 %i
47 7 11 dif 2.727158663347453 w2 1.73108856494841 - 2.513263276777259 %i
47 7 36 dif 2.727158663347453 w2 1.73108856494841 - 2.513263276777259 %i
47 8 11 dif 2.727158663347452 w2 1.983961865118942 - 2.436935714806977 %i
47 8 36 dif 2.727158663347452 w2 1.983961865118942 - 2.436935714806977 %i
47 9 11 dif 2.727158663347452 w2 2.227974309985783 - 2.349724206359222 %i
47 9 36 dif 2.727158663347452 w2 2.227974309985783 - 2.349724206359222 %i
47 10 11 dif 2.727158663347452 w2 2.462036080735235 - 2.252018259201636 %i
47 10 36 dif 2.727158663347453 w2 2.462036080735235 - 2.252018259201636 %i
47 11 36 dif 2.727158663347453 w2 2.685101800679769 - 2.144254251812706 %i
47 12 11 dif 2.727158663347453 w2 2.896175204164088 - 2.026913484409539 %i
47 12 36 dif 2.727158663347453 w2 2.896175204164088 - 2.026913484409539 %i
47 13 11 dif 2.727158663347453 w2 3.094313586129381 - 1.900520029344265 %i
47 13 36 dif 2.727158663347453 w2 3.094313586129381 - 1.900520029344265 %i
47 14 11 dif 2.727158663347453 w2 3.278632012462968 - 1.765638390469681 %i
47 14 36 dif 2.727158663347452 w2 3.278632012462968 - 1.765638390469681 %i
47 15 11 dif 2.727158663347452 w2 3.448307272328865 - 1.62287098192802 %i
47 15 36 dif 2.727158663347453 w2 3.448307272328865 - 1.62287098192802 %i
47 16 11 dif 2.727158663347452 w2 3.602581554827213 - 1.472855437623144 %i
47 16 36 dif 2.727158663347452 w2 3.602581554827213 - 1.472855437623144 %i
47 17 11 dif 2.727158663347452 w2 3.740765833561723 - 1.316261763392744 %i
47 17 36 dif 2.727158663347452 w2 3.740765833561723 - 1.316261763392744 %i
47 18 11 dif 2.727158663347452 w2 3.862242943998824 - 1.153789344599627 %i
47 18 36 dif 2.727158663347452 w2 3.862242943998824 - 1.153789344599627 %i
47 19 11 dif 2.727158663347452 w2 3.966470339874286 - 0.9861638225069029 %i
47 19 36 dif 2.727158663347452 w2 3.966470339874286 - 0.9861638225069029 %i
47 20 11 dif 2.727158663347452 w2 4.052982516336543 - 0.8141338533879519 %i
47 20 36 dif 2.727158663347452 w2 4.052982516336543 - 0.8141338533879519 %i
47 21 11 dif 2.727158663347453 w2 4.121393089004367 - 0.6384677648457707 %i
47 21 36 dif 2.727158663347453 w2 4.121393089004367 - 0.6384677648457707 %i
47 22 11 dif 2.727158663347452 w2 4.171396519653299 - 0.4599501242753813 %i
47 22 36 dif 2.727158663347452 w2 4.171396519653299 - 0.4599501242753813 %i
47 23 11 dif 2.727158663347453 w2 4.202769480823547 - 0.2793782347953845 %i
47 23 36 dif 2.727158663347453 w2 4.202769480823547 - 0.2793782347953845 %i
47 24 11 dif 2.727158663347453 w2 4.215371853254624 - 0.09755857429869455 %i
47 24 36 dif 2.727158663347454 w2 4.215371853254624 - 0.09755857429869455 %i
47 25 11 dif 2.727158663347452 w2 0.08469680647351893 %i + 4.209147351691975
47 25 36 dif 2.727158663347452 w2 0.08469680647351893 %i + 4.209147351691975
47 26 11 dif 2.727158663347452 w2 0.2665739107475587 %i + 4.184123776270605
47 26 36 dif 2.727158663347452 w2 0.2665739107475587 %i + 4.184123776270605
47 27 11 dif 2.727158663347452 w2 0.4472604312243968 %i + 4.140412888352907
47 27 36 dif 2.727158663347452 w2 0.4472604312243968 %i + 4.140412888352907
47 28 11 dif 2.727158663347452 w2 0.6259493780412657 %i + 4.078209911375304
47 28 36 dif 2.727158663347452 w2 0.6259493780412657 %i + 4.078209911375304
47 29 11 dif 2.727158663347451 w2 0.8018426829842791 %i + 3.997792658932979
47 29 36 dif 2.727158663347451 w2 0.8018426829842791 %i + 3.997792658932979
47 30 11 dif 2.727158663347452 w2 0.974154763854812 %i + 3.899520293996926
47 30 36 dif 2.727158663347452 w2 0.974154763854812 %i + 3.899520293996926
47 31 11 dif 2.727158663347453 w2 1.142116033070302 %i + 3.783831724804927
47 31 36 dif 2.727158663347453 w2 1.142116033070302 %i + 3.783831724804927
47 32 11 dif 2.727158663347452 w2 1.304976334829214 %i + 3.651243644590822
47 32 36 dif 2.727158663347453 w2 1.304976334829214 %i + 3.651243644590822
47 33 11 dif 2.727158663347452 w2 1.462008295488954 %i + 3.502348223907092
47 33 36 dif 2.727158663347452 w2 1.462008295488954 %i + 3.502348223907092
47 34 11 dif 2.727158663347452 w2 1.612510572193125 %i + 3.337810465847426
47 34 36 dif 2.727158663347452 w2 1.612510572193125 %i + 3.337810465847426
47 35 11 dif 2.727158663347452 w2 1.755810985238986 %i + 3.158365235981466
47 35 36 dif 2.727158663347452 w2 1.755810985238986 %i + 3.158365235981466
47 36 11 dif 2.727158663347453 w2 1.891269520195166 %i + 2.964813980266786
47 37 11 dif 2.727158663347453 w2 2.018281186361494 %i + 2.758021145596689
47 37 36 dif 2.727158663347453 w2 2.018281186361494 %i + 2.758021145596689
47 38 11 dif 2.727158663347452 w2 2.136278718804318 %i + 2.538910318970537
47 38 36 dif 2.727158663347452 w2 2.136278718804318 %i + 2.538910318970537
47 39 11 dif 2.727158663347452 w2 2.244735111899411 %i + 2.308460102530005
47 39 36 dif 2.727158663347452 w2 2.244735111899411 %i + 2.308460102530005
47 40 11 dif 2.727158663347452 w2 2.343165973067023 %i + 2.067699742884357
47 40 36 dif 2.727158663347452 w2 2.343165973067023 %i + 2.067699742884357
47 41 11 dif 2.727158663347452 w2 2.431131686186722 %i + 1.817704534245238
47 41 36 dif 2.727158663347452 w2 2.431131686186722 %i + 1.817704534245238
47 42 11 dif 2.727158663347452 w2 2.508239375029716 %i + 1.55959101590169
47 42 36 dif 2.727158663347452 w2 2.508239375029716 %i + 1.55959101590169
47 43 11 dif 2.727158663347453 w2 2.574144657939453 %i + 1.294511985484646
47 43 36 dif 2.727158663347453 w2 2.574144657939453 %i + 1.294511985484646
47 44 11 dif 2.727158663347452 w2 2.628553185923708 %i + 1.02365135029286
47 44 36 dif 2.727158663347452 w2 2.628553185923708 %i + 1.02365135029286
47 45 11 dif 7.985132720847538 w2 7.857087312908707 %i + 1.62296547569363
47 45 36 dif 7.985132720847538 w2 7.857087312908707 %i + 1.62296547569363
47 46 11 dif 2.727158663347452 w2 2.701960402943312 %i + 0.4694446020873031
47 46 36 dif 2.727158663347452 w2 2.701960402943312 %i + 0.4694446020873031
53 8 13 dif 0.075471698113207 w2 0.075173573027563 %i + 0.6622590571343794
53 8 40 dif 0.075471698113207 w2 0.075173573027563 %i + 0.6622590571343794
53 41 15 dif 16.50270956980383 w2 (- 16.07725701523544 %i) - 2.8823692082896
53 41 38 dif 16.50270956980383 w2 (- 16.07725701523544 %i) - 2.8823692082896
61 33 23 dif 1.502745575479383 w2 1.361040068545842 %i + 1.70763572733695
61 33 38 dif 1.502745575479383 w2 1.361040068545842 %i + 1.70763572733695
71 70 24 dif 41.44681300477293 w2 (- 41.28662011190385 %i) - 3.589858822945222
71 70 47 dif 41.44681300477293 w2 (- 41.28662011190385 %i) - 3.589858822945222
73 1 25 dif 27.02406458900282 w2 (- 26.73920335531907 %i) - 3.864559212739776
73 1 48 dif 27.02406458900282 w2 (- 26.73920335531907 %i) - 3.864559212739776
73 2 25 dif 27.0240645890028 w2 (- 26.88281117819189 %i) - 2.661757880335384
73 2 48 dif 27.0240645890028 w2 (- 26.88281117819189 %i) - 2.661757880335384
73 3 25 dif 27.0240645890028 w2 (- 26.97663822330574 %i) - 1.454027585085152
73 3 48 dif 27.0240645890028 w2 (- 26.97663822330574 %i) - 1.454027585085152
73 4 25 dif 27.0240645890028 w2 (- 27.02051074457247 %i) - 0.2436047654709702
73 4 48 dif 27.0240645890028 w2 (- 27.02051074457247 %i) - 0.2436047654709702
73 5 25 dif 27.02406458900281 w2 0.9672691540899649 - 27.01434750018233 %i
73 5 48 dif 27.02406458900281 w2 0.9672691540899649 - 27.01434750018233 %i
73 6 25 dif 27.02406458900281 w2 2.176351913847195 - 26.95815990304514 %i
73 6 48 dif 27.02406458900281 w2 2.176351913847195 - 26.95815990304514 %i
73 7 25 dif 27.02406458900281 w2 3.38140457086589 - 26.85205199965615 %i
73 7 48 dif 27.02406458900281 w2 3.38140457086589 - 26.85205199965615 %i
73 8 25 dif 27.02406458900281 w2 4.580195645033767 - 26.69622027742592 %i
73 8 48 dif 27.02406458900281 w2 4.580195645033767 - 26.69622027742592 %i
73 9 25 dif 27.02406458900281 w2 5.770505251248503 - 26.49095330083086 %i
73 9 48 dif 27.02406458900281 w2 5.770505251248503 - 26.49095330083086 %i
73 10 25 dif 27.02406458900281 w2 6.950129210133963 - 26.23663117705828 %i
73 10 48 dif 27.02406458900281 w2 6.950129210133963 - 26.23663117705828 %i
73 11 25 dif 27.02406458900281 w2 8.116883129672998 - 25.93372485213529 %i
73 11 48 dif 27.02406458900281 w2 8.116883129672998 - 25.93372485213529 %i
73 12 25 dif 27.02406458900281 w2 9.268606450198583 - 25.58279523884527 %i
73 12 48 dif 27.02406458900281 w2 9.268606450198583 - 25.58279523884527 %i
73 13 25 dif 27.02406458900281 w2 10.40316644525294 - 25.18449217804647 %i
73 13 48 dif 27.02406458900281 w2 10.40316644525294 - 25.18449217804647 %i
73 14 25 dif 27.02406458900281 w2 11.518462170906 - 24.73955323531635 %i
73 14 48 dif 27.02406458900281 w2 11.518462170906 - 24.73955323531635 %i
73 15 25 dif 27.02406458900281 w2 12.6124283562199 - 24.24880233514992 %i
73 15 48 dif 27.02406458900281 w2 12.6124283562199 - 24.24880233514992 %i
73 16 25 dif 27.02406458900281 w2 13.68303922765535 - 23.71314823524123 %i
73 16 48 dif 27.02406458900281 w2 13.68303922765535 - 23.71314823524123 %i
73 17 25 dif 27.0240645890028 w2 14.72831226033784 - 23.13358284367336 %i
73 17 48 dif 27.0240645890028 w2 14.72831226033784 - 23.13358284367336 %i
73 18 25 dif 27.02406458900281 w2 15.74631184923735 - 22.51117938213296 %i
73 18 48 dif 27.02406458900281 w2 15.74631184923735 - 22.51117938213296 %i
73 19 25 dif 27.02406458900281 w2 16.73515289346328 - 21.84709039855074 %i
73 19 48 dif 27.02406458900281 w2 16.73515289346328 - 21.84709039855074 %i
73 20 25 dif 27.02406458900281 w2 17.69300428703737 - 21.14254563284806 %i
73 20 48 dif 27.02406458900281 w2 17.69300428703737 - 21.14254563284806 %i
73 21 25 dif 27.02406458900281 w2 18.61809230968035 - 20.39884973974163 %i
73 21 48 dif 27.02406458900281 w2 18.61809230968035 - 20.39884973974163 %i
73 22 25 dif 27.02406458900281 w2 19.50870391133369 - 19.61737987282339 %i
73 22 48 dif 27.02406458900281 w2 19.50870391133369 - 19.61737987282339 %i
73 23 25 dif 27.02406458900281 w2 20.36318988433388 - 18.79958313438902 %i
73 23 48 dif 27.02406458900281 w2 20.36318988433388 - 18.79958313438902 %i
73 24 25 dif 27.02406458900281 w2 21.17996791736544 - 17.94697389573765 %i
73 24 48 dif 27.02406458900281 w2 21.17996791736544 - 17.94697389573765 %i
73 25 48 dif 27.02406458900281 w2 21.95752552553709 - 17.0611309929048 %i
73 26 25 dif 27.02406458900281 w2 22.69442285115577 - 16.14369480302154 %i
73 26 48 dif 27.02406458900281 w2 22.69442285115577 - 16.14369480302154 %i
73 27 25 dif 27.0240645890028 w2 23.38929533001143 - 15.19636420671363 %i
73 27 48 dif 27.02406458900281 w2 23.38929533001143 - 15.19636420671363 %i
73 28 25 dif 27.0240645890028 w2 24.04085621823604 - 14.2208934421657 %i
73 28 48 dif 27.0240645890028 w2 24.04085621823604 - 14.2208934421657 %i
73 29 25 dif 27.02406458900281 w2 24.64789897505681 - 13.21908885667598 %i
73 29 48 dif 27.02406458900281 w2 24.64789897505681 - 13.21908885667598 %i
73 30 25 dif 27.02406458900282 w2 25.20929949703204 - 12.19280556171691 %i
73 30 48 dif 27.02406458900282 w2 25.20929949703204 - 12.19280556171691 %i
73 31 25 dif 27.02406458900281 w2 25.72401819963192 - 11.14394399769575 %i
73 31 48 dif 27.02406458900281 w2 25.72401819963192 - 11.14394399769575 %i
73 32 25 dif 27.02406458900281 w2 26.19110194230983 - 10.07444641477647 %i
73 32 48 dif 27.02406458900281 w2 26.19110194230983 - 10.07444641477647 %i
73 33 25 dif 27.02406458900282 w2 26.60968579349905 - 8.986293276279526 %i
73 33 48 dif 27.02406458900282 w2 26.60968579349905 - 8.986293276279526 %i
73 34 25 dif 27.02406458900281 w2 26.97899463226705 - 7.881499591319698 %i
73 34 48 dif 27.02406458900281 w2 26.97899463226705 - 7.881499591319698 %i
73 35 25 dif 27.02406458900281 w2 27.29834458366098 - 6.762111183473104 %i
73 35 48 dif 27.02406458900281 w2 27.29834458366098 - 6.762111183473104 %i
73 36 25 dif 27.02406458900281 w2 27.56714428508665 - 5.63020090238287 %i
73 36 48 dif 27.02406458900281 w2 27.56714428508665 - 5.63020090238287 %i
73 37 25 dif 27.02406458900282 w2 27.78489598137591 - 4.48786478531878 %i
73 37 48 dif 27.02406458900282 w2 27.78489598137591 - 4.48786478531878 %i
73 38 25 dif 27.02406458900281 w2 27.95119644651462 - 3.337218175798774 %i
73 38 48 dif 27.02406458900281 w2 27.95119644651462 - 3.337218175798774 %i
73 39 25 dif 27.02406458900281 w2 28.06573773032448 - 2.180391806459697 %i
73 39 48 dif 27.02406458900281 w2 28.06573773032448 - 2.180391806459697 %i
73 40 25 dif 27.02406458900281 w2 28.12830772871577 - 1.019527853430969 %i
73 40 48 dif 27.02406458900281 w2 28.12830772871577 - 1.019527853430969 %i
73 41 25 dif 27.02406458900282 w2 0.1432240304824552 %i + 28.13879057645539
73 41 48 dif 27.02406458900282 w2 0.1432240304824552 %i + 28.13879057645539
73 42 25 dif 27.02406458900281 w2 1.305710696462231 %i + 28.09716686172247
73 42 48 dif 27.02406458900281 w2 1.305710696462231 %i + 28.09716686172247
73 43 25 dif 27.02406458900281 w2 2.465779486812581 %i + 28.00351366205478
73 43 48 dif 27.02406458900281 w2 2.465779486812581 %i + 28.00351366205478
73 44 25 dif 27.02406458900281 w2 3.621282221186798 %i + 27.8580044016187
73 44 48 dif 27.02406458900281 w2 3.621282221186798 %i + 27.8580044016187
73 45 25 dif 27.02406458900281 w2 4.770079174522693 %i + 27.66090853006769
73 45 48 dif 27.02406458900281 w2 4.770079174522693 %i + 27.66090853006769
73 46 25 dif 27.02406458900281 w2 5.910043039320869 %i + 27.4125910235835
73 46 48 dif 27.02406458900281 w2 5.910043039320869 %i + 27.4125910235835
73 47 25 dif 27.02406458900281 w2 7.039062864928494 %i + 27.11351170902435
73 47 48 dif 27.02406458900281 w2 7.039062864928494 %i + 27.11351170902435
73 48 25 dif 27.02406458900281 w2 8.155047966533929 %i + 26.7642244124314
73 49 25 dif 27.02406458900281 w2 9.25593179663377 %i + 26.36537593347046
73 49 48 dif 27.02406458900281 w2 9.25593179663377 %i + 26.36537593347046
73 50 25 dif 27.02406458900281 w2 10.33967577180301 %i + 25.91770484770786
73 50 48 dif 27.02406458900281 w2 10.33967577180301 %i + 25.91770484770786
73 51 25 dif 27.02406458900281 w2 11.40427304768236 %i + 25.42204013893855
73 51 48 dif 27.02406458900281 w2 11.40427304768236 %i + 25.42204013893855
73 52 25 dif 27.02406458900281 w2 12.4477522351919 %i + 24.87929966409897
73 52 48 dif 27.02406458900281 w2 12.4477522351919 %i + 24.87929966409897
73 53 25 dif 27.0240645890028 w2 13.46818105108996 %i + 24.29048845360719
73 53 48 dif 27.0240645890028 w2 13.46818105108996 %i + 24.29048845360719
73 54 25 dif 27.02406458900281 w2 14.46366989611676 %i + 23.65669685027813
73 54 48 dif 27.02406458900281 w2 14.46366989611676 %i + 23.65669685027813
73 55 25 dif 27.02406458900281 w2 15.43237535409726 %i + 22.97909849025946
73 55 48 dif 27.02406458900281 w2 15.43237535409726 %i + 22.97909849025946
73 56 25 dif 27.02406458900281 w2 16.3725036055236 %i + 22.2589481297278
73 56 48 dif 27.02406458900281 w2 16.3725036055236 %i + 22.2589481297278
73 57 25 dif 27.0240645890028 w2 17.28231374929587 %i + 21.497579321369
73 57 48 dif 27.0240645890028 w2 17.28231374929587 %i + 21.497579321369
73 58 25 dif 27.02406458900281 w2 18.16012102647014 %i + 20.69640194494569
73 58 48 dif 27.02406458900281 w2 18.16012102647014 %i + 20.69640194494569
73 59 25 dif 27.02406458900281 w2 19.00429994004426 %i + 19.85689959652436
73 59 48 dif 27.02406458900282 w2 19.00429994004426 %i + 19.85689959652436
73 60 25 dif 27.0240645890028 w2 19.81328726500399 %i + 18.98062684119711
73 60 48 dif 27.0240645890028 w2 19.81328726500399 %i + 18.98062684119711
73 61 25 dif 27.02406458900281 w2 20.58558494305605 %i + 18.06920633438492
73 61 48 dif 27.02406458900281 w2 20.58558494305605 %i + 18.06920633438492
73 62 25 dif 27.02406458900281 w2 21.31976285668703 %i + 17.12432581705334
73 62 48 dif 27.02406458900281 w2 21.31976285668703 %i + 17.12432581705334
73 63 25 dif 27.02406458900282 w2 22.01446147741193 %i + 16.14773499040475
73 63 48 dif 27.02406458900282 w2 22.01446147741193 %i + 16.14773499040475
73 64 25 dif 27.02406458900281 w2 22.66839438330786 %i + 15.14124227583454
73 64 48 dif 27.02406458900281 w2 22.66839438330786 %i + 15.14124227583454
73 65 25 dif 27.02406458900281 w2 23.2803506411714 %i + 14.10671146615099
73 65 48 dif 27.02406458900281 w2 23.2803506411714 %i + 14.10671146615099
73 66 25 dif 27.02406458900281 w2 23.84919704888804 %i + 13.04605827426003
73 66 48 dif 27.02406458900281 w2 23.84919704888804 %i + 13.04605827426003
73 67 25 dif 27.02406458900282 w2 24.37388023386168 %i + 11.96124678570593
73 67 48 dif 27.02406458900282 w2 24.37388023386168 %i + 11.96124678570593
73 68 25 dif 27.0240645890028 w2 24.85342860361811 %i + 10.85428582163706
73 68 48 dif 27.0240645890028 w2 24.85342860361811 %i + 10.85428582163706
73 69 25 dif 27.02406458900281 w2 25.28695414497078 %i + 9.727225218931532
73 69 48 dif 27.02406458900281 w2 25.28695414497078 %i + 9.727225218931532
73 70 25 dif 27.02406458900283 w2 25.6736540684166 %i + 8.582152034371167
73 70 48 dif 27.02406458900283 w2 25.6736540684166 %i + 8.582152034371167
73 71 25 dif 27.02406458900282 w2 26.01281229471735 %i + 7.421186679892822
73 71 48 dif 27.02406458900282 w2 26.01281229471735 %i + 7.421186679892822
73 72 25 dif 27.02406458900281 w2 26.30380078091369 %i + 6.246478996073574
73 72 48 dif 27.02406458900281 w2 26.30380078091369 %i + 6.246478996073574
97 1 6 dif 0.8353339020004353 w2 0.8343483410477168 %i + 0.20825661024337
97 1 91 dif 0.8353339020004353 w2 0.8343483410477168 %i + 0.20825661024337
(%o1) done
I also ran the following code to test trigrat on simpler expressions of the form sin(%pi * a / p). Unlike the above, this test completed without detecting any errors (in the two printed cases, the difference is around 1.7E-15):
(%i1) for p : 2 thru 100 do (
for a : 1 thru p - 1 do (
block( [w1, w2, dif],
w1 : sin(%pi * a / p),
w2 : trigrat(w1),
dif : float(abs(expand(w1 - w2))),
if dif > 10^-15 then (
print("p =", p, "a =", a, "dif =", dif,
"float(w1) =", float(w1),
"float(expand(w2)) =", float(expand(w2)),
"expand(float(w2)) =", expand(float(w2)))
)
)
)
);
p = 73 a = 1 dif = 1.600284051989429E-15 float(w1) = 0.04302223300453047
float(expand(w2)) = 1.165734175856414E-15 %i + 0.04302223300452935
expand(float(w2)) = 1.165734175856414E-15 %i + 0.04302223300452935
p = 73 a = 72 dif = 1.698371360365206E-15 float(w1) = 0.04302223300453059
float(expand(w2)) = 1.165734175856414E-15 %i + 0.04302223300452935
expand(float(w2)) = 1.165734175856414E-15 %i + 0.04302223300452935
(%o1) done