1pp_addpm({At=>Top},<<'EOD'); 2=head1 NAME 3 4PDL::GSLSF::TRIG - PDL interface to GSL Special Functions 5 6=head1 DESCRIPTION 7 8This is an interface to the Special Function package present in the GNU Scientific Library. 9 10=head1 SYNOPSIS 11 12=cut 13 14 15EOD 16 17# PP interface to GSL 18 19pp_addhdr(' 20#include <gsl/gsl_sf.h> 21 22#include "../gslerr.h" 23 24'); 25 26pp_def('gsl_sf_sin', 27 GenericTypes => [D], 28 Pars=>'double x(); double [o]y(); double [o]e()', 29 Code =>' 30gsl_sf_result r; 31GSLERR(gsl_sf_sin_e,($x(),&r)) 32$y() = r.val; 33$e() = r.err; 34', 35 Doc =>'Sin(x) with GSL semantics.' 36 ); 37 38pp_def('gsl_sf_cos', 39 GenericTypes => [D], 40 Pars=>'double x(); double [o]y(); double [o]e()', 41 Code =>' 42gsl_sf_result r; 43GSLERR(gsl_sf_cos_e,($x(),&r)) 44$y() = r.val; 45$e() = r.err; 46', 47 Doc =>'Cos(x) with GSL semantics.' 48 ); 49 50pp_def('gsl_sf_hypot', 51 GenericTypes => [D], 52 Pars=>'double x(); double xx(); double [o]y(); double [o]e()', 53 Code =>' 54gsl_sf_result r; 55GSLERR(gsl_sf_hypot_e,($x(),$xx(),&r)) 56$y() = r.val; 57$e() = r.err; 58', 59 Doc =>'Hypot(x,xx) with GSL semantics.' 60 ); 61 62pp_def('gsl_sf_complex_sin', 63 GenericTypes => [D], 64 Pars=>'double zr(); double zi(); double [o]x(); double [o]y(); double [o]xe(); double [o]ye()', 65 Code =>' 66gsl_sf_result r; 67gsl_sf_result ri; 68GSLERR(gsl_sf_complex_sin_e,($zr(),$zi(),&r,&ri)) 69$x() = r.val; 70$xe() = r.err; 71$y() = ri.val; 72$ye() = ri.err; 73', 74 Doc =>'Sin(z) for complex z' 75 ); 76 77pp_def('gsl_sf_complex_cos', 78 GenericTypes => [D], 79 Pars=>'double zr(); double zi(); double [o]x(); double [o]y(); double [o]xe(); double [o]ye()', 80 Code =>' 81gsl_sf_result r; 82gsl_sf_result ri; 83GSLERR(gsl_sf_complex_cos_e,($zr(),$zi(),&r,&ri)) 84$x() = r.val; 85$xe() = r.err; 86$y() = ri.val; 87$ye() = ri.err; 88', 89 Doc =>'Cos(z) for complex z' 90 ); 91 92pp_def('gsl_sf_complex_logsin', 93 GenericTypes => [D], 94 Pars=>'double zr(); double zi(); double [o]x(); double [o]y(); double [o]xe(); double [o]ye()', 95 Code =>' 96gsl_sf_result r; 97gsl_sf_result ri; 98GSLERR(gsl_sf_complex_logsin_e,($zr(),$zi(),&r,&ri)) 99$x() = r.val; 100$xe() = r.err; 101$y() = ri.val; 102$ye() = ri.err; 103', 104 Doc =>'Log(Sin(z)) for complex z' 105 ); 106 107pp_def('gsl_sf_lnsinh', 108 GenericTypes => [D], 109 Pars=>'double x(); double [o]y(); double [o]e()', 110 Code =>' 111gsl_sf_result r; 112GSLERR(gsl_sf_lnsinh_e,($x(),&r)) 113$y() = r.val; 114$e() = r.err; 115', 116 Doc =>'Log(Sinh(x)) with GSL semantics.' 117 ); 118 119pp_def('gsl_sf_lncosh', 120 GenericTypes => [D], 121 Pars=>'double x(); double [o]y(); double [o]e()', 122 Code =>' 123gsl_sf_result r; 124GSLERR(gsl_sf_lncosh_e,($x(),&r)) 125$y() = r.val; 126$e() = r.err; 127', 128 Doc =>'Log(Cos(x)) with GSL semantics.' 129 ); 130 131pp_def('gsl_sf_polar_to_rect', 132 GenericTypes => [D], 133 Pars=>'double r(); double t(); double [o]x(); double [o]y(); double [o]xe(); double [o]ye()', 134 Code =>' 135gsl_sf_result r; 136gsl_sf_result ri; 137GSLERR(gsl_sf_polar_to_rect,($r(),$t(),&r,&ri)) 138$x() = r.val; 139$xe() = r.err; 140$y() = ri.val; 141$ye() = ri.err; 142', 143 Doc =>'Convert polar to rectlinear coordinates.' 144 ); 145 146pp_def('gsl_sf_rect_to_polar', 147 GenericTypes => [D], 148 Pars=>'double x(); double y(); double [o]r(); double [o]t(); double [o]re(); double [o]te()', 149 Code =>' 150gsl_sf_result r; 151gsl_sf_result ri; 152GSLERR(gsl_sf_rect_to_polar,($x(),$y(),&r,&ri)) 153$r() = r.val; 154$re() = r.err; 155$t() = ri.val; 156$te() = ri.err; 157', 158 Doc =>'Convert rectlinear to polar coordinates. return argument in range [-pi, pi].' 159 ); 160 161pp_def('gsl_sf_angle_restrict_symm', 162 GenericTypes => [D], 163 Pars=>'double [o]y();', 164 Code =>' 165GSLERR(gsl_sf_angle_restrict_symm_e,($P(y))) 166', 167 Doc =>'Force an angle to lie in the range (-pi,pi].' 168 ); 169 170pp_def('gsl_sf_angle_restrict_pos', 171 GenericTypes => [D], 172 Pars=>'double [o]y();', 173 Code =>' 174GSLERR(gsl_sf_angle_restrict_pos_e,($P(y))) 175', 176 Doc =>'Force an angle to lie in the range [0,2 pi).' 177 ); 178 179pp_def('gsl_sf_sin_err', 180 GenericTypes => [D], 181 Pars=>'double x(); double dx(); double [o]y(); double [o]e()', 182 Code =>' 183gsl_sf_result r; 184GSLERR(gsl_sf_sin_err_e,($x(),$dx(),&r)) 185$y() = r.val; 186$e() = r.err; 187', 188 Doc =>'Sin(x) for quantity with an associated error.' 189 ); 190 191pp_def('gsl_sf_cos_err', 192 GenericTypes => [D], 193 Pars=>'double x(); double dx(); double [o]y(); double [o]e()', 194 Code =>' 195gsl_sf_result r; 196GSLERR(gsl_sf_cos_err_e,($x(),$dx(),&r)) 197$y() = r.val; 198$e() = r.err; 199', 200 Doc =>'Cos(x) for quantity with an associated error.' 201 ); 202 203 204pp_addpm({At=>Bot},<<'EOD'); 205=head1 AUTHOR 206 207This file copyright (C) 1999 Christian Pellegrin <chri@infis.univ.trieste.it> 208All rights reserved. There 209is no warranty. You are allowed to redistribute this software / 210documentation under certain conditions. For details, see the file 211COPYING in the PDL distribution. If this file is separated from the 212PDL distribution, the copyright notice should be included in the file. 213 214The GSL SF modules were written by G. Jungman. 215 216=cut 217 218 219EOD 220 221pp_add_boot('gsl_set_error_handler_off(); 222'); 223 224 225pp_done(); 226