Today I stumbled over a problem. The short form is that I goofed in
my implementation of jtDfromQ in k.c. I might have this fixed in an
hour or so, or it might take me longer. (I'm going to get breakfast,
first.)
Long form:
phi=: (+%)/1e3#1x
0.0+phi
1.61803
0.0+2*phi
3.23607
0.0+_1+2*phi
2.23607
0.0+*~_1+2*phi
4.25353e38
So I built a program in C to mimic this calculation:
#include <gmp.h>
#include <stdio.h>
int main() {
// golden ratio as continued fraction
mpq_t one;
mpq_init(one);
mpq_set_ui(one, 1, 1);
mpq_t phi;
mpq_init(phi);
mpq_set_ui(phi, 1, 1);
for (int j= 0; j<999; j++) {
mpq_div(phi, one, phi);
mpq_add(phi, one, phi);
}
printf("phi: %g -- %s\n", mpq_get_d(phi), mpq_get_str(0, 10, phi));
mpq_t two;
mpq_init(two);
mpq_set_ui(two, 2, 1);
mpq_t phi2;
mpq_init(phi2);
mpq_mul(phi2, two, phi);
printf("2*phi: %g -- %s\n", mpq_get_d(phi2), mpq_get_str(0, 10, phi2));
mpq_t sqr5;
mpq_init(sqr5);
mpq_sub(sqr5, phi2, one);
printf("square root of 5: %g -- %s\n", mpq_get_d(sqr5),
mpq_get_str(0, 10, sqr5));
mpq_t five;
mpq_init(five);
mpq_mul(five, sqr5, sqr5);
printf("5: %g -- %s\n", mpq_get_d(five), mpq_get_str(0, 10, five));
}
and built it with cc -g sq5.c -o sq5 -lgmp
It displayed:
phi: 1.61803 --
70330367711422815821835254877183549770181269836358732742604905087154537118196933579742249494562611733487750449241765991088186363265450223647106012053374121273867339111198139373125598767690091902245245323403501/43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875
2*phi: 3.23607 --
140660735422845631643670509754367099540362539672717465485209810174309074236393867159484498989125223466975500898483531982176372726530900447294212024106748242547734678222396278746251197535380183804490490646807002/43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875
square root of 5: 2.23607 --
97194177735908175207981982079326473737797879155345685082728081084772518818444815269080619149045968297679578305403209347401163036907660573971740862463751801641201490284097309096322681531675707666695323797578127/43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875
5: 5 --
9446708185759308415384067495999677431530963218480368032804826598281856324445977322684945038267086094364761366000137291348836189673785457326607903364013465483957273836804336595888397782139002535468799414419546535346394066447256463745311310661259359973909189379826722425332112242554370313063917929424669185186291673823764654829513873821477637371237697744102254002802127905427315493403711022179894479121632130910668828129/1889341637151861683076813499199935486306192643696073606560965319656371264889195464536989007653417218872952273200027458269767237934757091465321580672802693096791454767360867319177679556427800507093759882883909307069278813289451292749062262132251871994781837875965344485066422448510874062612783585884933837037258334764752930965902774764295527474247539548820450800560425581085463098680742204435978895824326426182133765625
Comparing with my J session:
phi
70330367711422815821835254877183549770181269836358732742604905087154537118196933579742249494562611733487750449241765991088186363265450223647106012053374121273867339111198139373125598767690091902245245323403501r4346655768693745643568852767504062580256466051...
2*phi
140660735422845631643670509754367099540362539672717465485209810174309074236393867159484498989125223466975500898483531982176372726530900447294212024106748242547734678222396278746251197535380183804490490646807002r434665576869374564356885276750406258025646605...
(2*phi)-1
97194177735908175207981982079326473737797879155345685082728081084772518818444815269080619149045968297679578305403209347401163036907660573971740862463751801641201490284097309096322681531675707666695323797578127r4346655768693745643568852767504062580256466051...
*~(2*phi)-1
9446708185759308415384067495999677431530963218480368032804826598281856324445977322684945038267086094364761366000137291348836189673785457326607903364013465483957273836804336595888397782139002535468799414419546535346394066447256463745311310661259359973909189...
(And if I take the C value for five, replace '/' with 'r' and compare
it to ":*~(2*phi)-1 the values are identical.)
So, anyways... I need to figure out where I went wrong in jtDfromQ.
Thanks,
--
Raul
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm