diff --git a/cal/Makefile b/cal/Makefile index 087459c..8aedd65 100644 --- a/cal/Makefile +++ b/cal/Makefile @@ -120,7 +120,7 @@ V=@: # # Please use: # -# make calc_files_list +# make clobber >/dev/null && make calc_files_list # # to keep this list in nice sorted order. # @@ -137,10 +137,10 @@ CALC_FILES= README alg_config.cal beer.cal bernoulli.cal \ smallfactors.cal solve.cal specialfunctions.cal splitbits.cal \ statistics.cal strings.cal sumsq.cal sumtimes.cal surd.cal \ test1700.cal test2300.cal test2600.cal test2700.cal test3100.cal \ - test3300.cal test3400.cal test3500.cal test4000.cal test4100.cal \ - test4600.cal test5100.cal test5200.cal test8400.cal test8500.cal \ - test8600.cal test8900.cal toomcook.cal unitfrac.cal varargs.cal \ - xx_print.cal zeta2.cal + test3300.cal test3400.cal test4000.cal test4100.cal test4600.cal \ + test5100.cal test5200.cal test8400.cal test8500.cal test8600.cal \ + test8900.cal test9300.cal toomcook.cal unitfrac.cal varargs.cal \ + w2f.cal xx_print.cal zeta2.cal # These calc files are now obsolete and are removed by the install rule. # diff --git a/cal/regress.cal b/cal/regress.cal index 83bfa6e..b004602 100644 --- a/cal/regress.cal +++ b/cal/regress.cal @@ -3566,17 +3566,20 @@ print '051: parsed test_trig()'; /* * test_frem - tests of the functions frem, fcnt, gcdrem + * + * NOTE: We haved test3500 to test9300. We parse this code here, + * however we execute this code as a 9300 test. */ -read -once "test3500"; -print '052: read -once test3500'; +read -once "test9300"; +print '052: read -once test9300'; /**/ define test_frem() { local tnum; /* test number */ - print '3500: Beginning test_frem'; + print '9300: Beginning test_frem'; - tnum = test3500(1, 3501, 200, 61); + tnum = test9300(1, 9301, 200, 61); print tnum: ': Ending test_frem'; } @@ -8085,8 +8088,6 @@ return test_det(); print; return test_trig(); print; -return test_frem(); -print; return test_error(); print; return test_param(); @@ -8867,6 +8868,15 @@ print '9100: parsed test_functions3()'; print; return test_functions3(); +/* + * test_frem - tests of the functions frem, fcnt, gcdrem + * + * NOTE: We haved test3500 to test9300. We parse this code here, + * however we execute this code as a 9300 test. + */ +print; +return test_frem(); + /* * read various calc resource files diff --git a/cal/test3500.cal b/cal/test9300.cal similarity index 95% rename from cal/test3500.cal rename to cal/test9300.cal index 27743ce..b62ee36 100644 --- a/cal/test3500.cal +++ b/cal/test9300.cal @@ -1,7 +1,7 @@ /* - * test3500 - 3500 series of the regress.cal test suite + * test9300 - 9300 series of the regress.cal test suite * - * Copyright (C) 1999 Ernest Bowen and Landon Curt Noll + * Copyright (C) 1999,2023 Ernest Bowen and Landon Curt Noll * * Primary author: Ernest Bowen * @@ -255,16 +255,16 @@ define testh(str,n,N,verbose) } /* - * test3500 - perform all of the above tests a bunch of times + * test9300 - perform all of the above tests a bunch of times */ -define test3500(verbose, tnum, n, N) +define test9300(verbose, tnum, n, N) { /* set test parameters */ if (isnull(verbose)) { verbose = defaultverbose; } if (isnull(tnum)) { - tnum = 3501; /* default test number */ + tnum = 9301; /* default test number */ } if (isnull(n)) { n = 200; @@ -276,7 +276,7 @@ define test3500(verbose, tnum, n, N) /* * test a lot of stuff */ - srand(3500e3500); + srand(9300e9300); err += testf(strcat(str(tnum++), ": frem/fcnt"), n, verbose); err += testg(strcat(str(tnum++), ": gcdrem"), n, verbose); err += testh(strcat(str(tnum++),": gcdrem #2"), n, N, verbose); diff --git a/cmath.h b/cmath.h index 8fcc752..7dec39f 100644 --- a/cmath.h +++ b/cmath.h @@ -118,6 +118,10 @@ E_FUNC COMPLEX *c_asech(COMPLEX *c, NUMBER *epsilon); E_FUNC COMPLEX *c_acsch(COMPLEX *c, NUMBER *epsilon); E_FUNC COMPLEX *c_gd(COMPLEX *c, NUMBER *epsilon); E_FUNC COMPLEX *c_agd(COMPLEX *c, NUMBER *epsilon); + +/* + * historical trig functions + */ E_FUNC COMPLEX *c_versin(COMPLEX *c, NUMBER *epsilon); E_FUNC COMPLEX *c_coversin(COMPLEX *c, NUMBER *epsilon); diff --git a/func.c b/func.c index 5fda13f..cf57267 100644 --- a/func.c +++ b/func.c @@ -3486,108 +3486,6 @@ f_csch(int count, VALUE **vals) } -S_FUNC VALUE -f_versin(int count, VALUE **vals) -{ - VALUE result; - COMPLEX *c; - NUMBER *eps; - - /* initialize VALUE */ - result.v_subtype = V_NOSUBTYPE; - - /* - * set error tolerance for builtin function - * - * Use eps VALUE arg if given and value is in a valid range. - */ - eps = conf->epsilon; - if (count == 2) { - if (verify_eps(vals[1]) == false) { - return error_value(E_VERSIN1); - } - eps = vals[1]->v_num; - } - - /* - * compute sine to a given error tolerance - */ - switch (vals[0]->v_type) { - case V_NUM: - result.v_num = qversin(vals[0]->v_num, eps); - result.v_type = V_NUM; - break; - case V_COM: - c = c_versin(vals[0]->v_com, eps); - if (c == NULL) { - return error_value(E_VERSIN3); - } - result.v_com = c; - result.v_type = V_COM; - if (cisreal(c)) { - result.v_num = qlink(c->real); - result.v_type = V_NUM; - comfree(c); - } - break; - default: - return error_value(E_VERSIN2); - } - return result; -} - - -S_FUNC VALUE -f_coversin(int count, VALUE **vals) -{ - VALUE result; - COMPLEX *c; - NUMBER *eps; - - /* initialize VALUE */ - result.v_subtype = V_NOSUBTYPE; - - /* - * set error tolerance for builtin function - * - * Use eps VALUE arg if given and value is in a valid range. - */ - eps = conf->epsilon; - if (count == 2) { - if (verify_eps(vals[1]) == false) { - return error_value(E_COVERSIN1); - } - eps = vals[1]->v_num; - } - - /* - * compute cosinr to a given error tolerance - */ - switch (vals[0]->v_type) { - case V_NUM: - result.v_num = qcoversin(vals[0]->v_num, eps); - result.v_type = V_NUM; - break; - case V_COM: - c = c_coversin(vals[0]->v_com, eps); - if (c == NULL) { - return error_value(E_COVERSIN3); - } - result.v_com = c; - result.v_type = V_COM; - if (cisreal(c)) { - result.v_num = qlink(c->real); - result.v_type = V_NUM; - comfree(c); - } - break; - default: - return error_value(E_COVERSIN2); - } - return result; -} - - S_FUNC VALUE f_atan(int count, VALUE **vals) { @@ -10716,6 +10614,108 @@ f_version(void) } +S_FUNC VALUE +f_versin(int count, VALUE **vals) +{ + VALUE result; + COMPLEX *c; + NUMBER *eps; + + /* initialize VALUE */ + result.v_subtype = V_NOSUBTYPE; + + /* + * set error tolerance for builtin function + * + * Use eps VALUE arg if given and value is in a valid range. + */ + eps = conf->epsilon; + if (count == 2) { + if (verify_eps(vals[1]) == false) { + return error_value(E_VERSIN1); + } + eps = vals[1]->v_num; + } + + /* + * compute sine to a given error tolerance + */ + switch (vals[0]->v_type) { + case V_NUM: + result.v_num = qversin(vals[0]->v_num, eps); + result.v_type = V_NUM; + break; + case V_COM: + c = c_versin(vals[0]->v_com, eps); + if (c == NULL) { + return error_value(E_VERSIN3); + } + result.v_com = c; + result.v_type = V_COM; + if (cisreal(c)) { + result.v_num = qlink(c->real); + result.v_type = V_NUM; + comfree(c); + } + break; + default: + return error_value(E_VERSIN2); + } + return result; +} + + +S_FUNC VALUE +f_coversin(int count, VALUE **vals) +{ + VALUE result; + COMPLEX *c; + NUMBER *eps; + + /* initialize VALUE */ + result.v_subtype = V_NOSUBTYPE; + + /* + * set error tolerance for builtin function + * + * Use eps VALUE arg if given and value is in a valid range. + */ + eps = conf->epsilon; + if (count == 2) { + if (verify_eps(vals[1]) == false) { + return error_value(E_COVERSIN1); + } + eps = vals[1]->v_num; + } + + /* + * compute cosinr to a given error tolerance + */ + switch (vals[0]->v_type) { + case V_NUM: + result.v_num = qcoversin(vals[0]->v_num, eps); + result.v_type = V_NUM; + break; + case V_COM: + c = c_coversin(vals[0]->v_com, eps); + if (c == NULL) { + return error_value(E_COVERSIN3); + } + result.v_com = c; + result.v_type = V_COM; + if (cisreal(c)) { + result.v_num = qlink(c->real); + result.v_type = V_NUM; + comfree(c); + } + break; + default: + return error_value(E_COVERSIN2); + } + return result; +} + + #endif /* !FUNCLIST */ diff --git a/qmath.h b/qmath.h index 793a0e3..d17a659 100644 --- a/qmath.h +++ b/qmath.h @@ -222,6 +222,10 @@ E_FUNC NUMBER *qbern(ZVALUE z); E_FUNC void qfreebern(void); E_FUNC NUMBER *qeuler(ZVALUE z); E_FUNC void qfreeeuler(void); + +/* + * historical trig functions + */ E_FUNC NUMBER *qversin(NUMBER *q, NUMBER *epsilon); E_FUNC NUMBER *qcoversin(NUMBER *q, NUMBER *epsilon);