/libs/gsl.scm

http://github.com/digego/extempore · Scheme · 438 lines · 294 code · 76 blank · 68 comment · 0 complexity · 78ecaf9c30a36e8b708334f46acc2230 MD5 · raw file

  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ;;
  3. ;; GNU Scientific Library
  4. ;;
  5. ;; This assumes 64bit sorry!
  6. ;;
  7. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  8. (define gsllib (if (string=? "Linux" (sys:platform))
  9. (sys:open-dylib "libgsl.so.0")
  10. (println "tell me where to find the gsl dynamic library on your platform here!")))
  11. ;; SOME TYPES FOR GSL
  12. (bind-type gsl_complex <|2,double|>)
  13. (bind-alias gsl_complex_packed double*)
  14. (bind-alias gsl_complex_packed_array double*)
  15. (bind-alias gsl_complex_packed_ptr double*)
  16. (bind-alias gsl_const_complex_packed double*)
  17. (bind-alias gsl_const_complex_packed_array double*)
  18. (bind-alias gsl_const_complex_packed_ptr double*)
  19. (bind-type gsl_sf_result <double,double>)
  20. (bind-type gsl_sf_result_e10 <double,double,i32>)
  21. (bind-type gsl_permutation <size_t,size_t*>)
  22. (bind-type gsl_combination <size_t,size_t,size_t*>)
  23. (bind-type gsl_block <size_t,double*>)
  24. (bind-type gsl_block_complex <size_t,double*>)
  25. (bind-type gsl_vector <size_t,size_t,double*,gsl_block*,i32>)
  26. (bind-type gsl_vector_complex <size_t,size_t,double*,gsl_block_complex*,i32>)
  27. (bind-type gsl_matrix <size_t,size_t,size_t,double*,gsl_block*,i32>)
  28. (bind-type gsl_matrix_complex <size_t,size_t,size_t,double*,gsl_block_complex*,i32>)
  29. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  30. ;;
  31. ;; COMPLEX NUMBERS
  32. ;;
  33. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  34. (bind-lib gsllib gsl_complex_rect [gsl_complex,double,double]*)
  35. (bind-lib gsllib gsl_complex_polar [gsl_complex,double,double]*)
  36. (definec GSL_REAL (lambda (z:gsl_complex) (aref (tref z 0) 0)))
  37. (definec GSL_IMAG (lambda (z:gsl_complex) (aref (tref z 0) 1)))
  38. (definec GSL_SET_COMPLEX
  39. (lambda (z:gsl_complex* x y)
  40. (aset! (tref-ptr z 0) 0 x)
  41. (aset! (tref-ptr z 0) 1 y)
  42. z))
  43. (definec GSL_SET_REAL (lambda (z:gsl_complex* x) (aset! (tref-ptr z 0) 0 x) z))
  44. (definec GSL_SET_IMAG (lambda (z:gsl_complex* y) (aset! (tref-ptr z 0) 1 y) z))
  45. (bind-lib gsllib gsl_complex_arg [double,gsl_complex]*)
  46. (bind-lib gsllib gsl_complex_abs [double,gsl_complex]*)
  47. (bind-lib gsllib gsl_complex_logabs [double,gsl_complex]*)
  48. ;; complex ops
  49. (bind-lib gsllib gsl_complex_add [gsl_complex,gsl_complex,gsl_complex]*)
  50. (bind-lib gsllib gsl_complex_sub [gsl_complex,gsl_complex,gsl_complex]*)
  51. (bind-lib gsllib gsl_complex_mul [gsl_complex,gsl_complex,gsl_complex]*)
  52. (bind-lib gsllib gsl_complex_div [gsl_complex,gsl_complex,gsl_complex]*)
  53. (bind-lib gsllib gsl_complex_add_real [gsl_complex,gsl_complex,double]*)
  54. (bind-lib gsllib gsl_complex_sub_real [gsl_complex,gsl_complex,double]*)
  55. (bind-lib gsllib gsl_complex_mul_real [gsl_complex,gsl_complex,double]*)
  56. (bind-lib gsllib gsl_complex_div_real [gsl_complex,gsl_complex,double]*)
  57. (bind-lib gsllib gsl_complex_add_imag [gsl_complex,gsl_complex,double]*)
  58. (bind-lib gsllib gsl_complex_sub_imag [gsl_complex,gsl_complex,double]*)
  59. (bind-lib gsllib gsl_complex_mul_imag [gsl_complex,gsl_complex,double]*)
  60. (bind-lib gsllib gsl_complex_div_imag [gsl_complex,gsl_complex,double]*)
  61. (bind-lib gsllib gsl_complex_conjugate [gsl_complex,gsl_complex]*)
  62. (bind-lib gsllib gsl_complex_inverse [gsl_complex,gsl_complex]*)
  63. (bind-lib gsllib gsl_complex_negative [gsl_complex,gsl_complex]*)
  64. (bind-lib gsllib gsl_complex_sqrt [gsl_complex,gsl_complex]*)
  65. (bind-lib gsllib gsl_complex_sqrt_real [gsl_complex,double]*)
  66. (bind-lib gsllib gsl_complex_pow [gsl_complex,gsl_complex,gsl_complex]*)
  67. (bind-lib gsllib gsl_complex_pow_real [gsl_complex,gsl_complex,double]*)
  68. (bind-lib gsllib gsl_complex_exp [gsl_complex,gsl_complex]*)
  69. (bind-lib gsllib gsl_complex_log [gsl_complex,gsl_complex]*)
  70. (bind-lib gsllib gsl_complex_log10 [gsl_complex,gsl_complex]*)
  71. (bind-lib gsllib gsl_complex_log_b [gsl_complex,gsl_complex,gsl_complex]*)
  72. (bind-lib gsllib gsl_complex_sin [gsl_complex,gsl_complex]*)
  73. (bind-lib gsllib gsl_complex_cos [gsl_complex,gsl_complex]*)
  74. (bind-lib gsllib gsl_complex_tan [gsl_complex,gsl_complex]*)
  75. (bind-lib gsllib gsl_complex_sec [gsl_complex,gsl_complex]*)
  76. (bind-lib gsllib gsl_complex_csc [gsl_complex,gsl_complex]*)
  77. (bind-lib gsllib gsl_complex_cot [gsl_complex,gsl_complex]*)
  78. (bind-lib gsllib gsl_complex_arcsin [gsl_complex,gsl_complex]*)
  79. (bind-lib gsllib gsl_complex_arccos [gsl_complex,gsl_complex]*)
  80. (bind-lib gsllib gsl_complex_arctan [gsl_complex,gsl_complex]*)
  81. (bind-lib gsllib gsl_complex_arcsec [gsl_complex,gsl_complex]*)
  82. (bind-lib gsllib gsl_complex_arccsc [gsl_complex,gsl_complex]*)
  83. (bind-lib gsllib gsl_complex_arccot [gsl_complex,gsl_complex]*)
  84. (bind-lib gsllib gsl_complex_arcsin_real [gsl_complex,double]*)
  85. (bind-lib gsllib gsl_complex_arccos_real [gsl_complex,double]*)
  86. (bind-lib gsllib gsl_complex_arcsec_real [gsl_complex,double]*)
  87. (bind-lib gsllib gsl_complex_arccsc_real [gsl_complex,double]*)
  88. (bind-lib gsllib gsl_complex_sinh [gsl_complex,gsl_complex]*)
  89. (bind-lib gsllib gsl_complex_cosh [gsl_complex,gsl_complex]*)
  90. (bind-lib gsllib gsl_complex_tanh [gsl_complex,gsl_complex]*)
  91. (bind-lib gsllib gsl_complex_sech [gsl_complex,gsl_complex]*)
  92. (bind-lib gsllib gsl_complex_csch [gsl_complex,gsl_complex]*)
  93. (bind-lib gsllib gsl_complex_coth [gsl_complex,gsl_complex]*)
  94. (bind-lib gsllib gsl_complex_arcsinh [gsl_complex,gsl_complex]*)
  95. (bind-lib gsllib gsl_complex_arccosh [gsl_complex,gsl_complex]*)
  96. (bind-lib gsllib gsl_complex_arctanh [gsl_complex,gsl_complex]*)
  97. (bind-lib gsllib gsl_complex_arcsech [gsl_complex,gsl_complex]*)
  98. (bind-lib gsllib gsl_complex_arccsch [gsl_complex,gsl_complex]*)
  99. (bind-lib gsllib gsl_complex_arccoth [gsl_complex,gsl_complex]*)
  100. (bind-lib gsllib gsl_complex_arccosh_real [gsl_complex,double]*)
  101. (bind-lib gsllib gsl_complex_arctanh_real [gsl_complex,double]*)
  102. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  103. ;;
  104. ;; POLYNOMIALS
  105. ;;
  106. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  107. (bind-lib gsllib gsl_poly_eval [double,double*,i32,double]*)
  108. (bind-lib gsllib gsl_poly_complex_eval [gsl_complex,double*,i32,gsl_complex]*)
  109. (bind-lib gsllib gsl_complex_poly_complex_eval [gsl_complex*,i32,gsl_complex]*)
  110. (bind-lib gsllib gsl_poly_eval_derivs [i32,double*,size_t,double,double*,size_t]*)
  111. (bind-lib gsllib gsl_poly_dd_init [i32,double*,double*,double*,size_t]*)
  112. (bind-lib gsllib gsl_poly_dd_eval [double,double*,double*,size_t,double]*)
  113. (bind-lib gsllib gsl_poly_dd_taylor [i32,double*,double,double*,double*,size_t,double*]*)
  114. (bind-lib gsllib gsl_poly_solve_quadratic [i32,double,double,double,double*,double*]*)
  115. (bind-lib gsllib gsl_poly_complex_solve_quadratic [i32,double,double,double,gsl_complex*,gsl_complex*]*)
  116. (bind-lib gsllib gsl_poly_solve_cubic [i32,double,double,double,double*,double*,double*]*)
  117. (bind-lib gsllib gsl_poly_complex_solve_cubic [i32,double,double,double,gsl_complex*,gsl_complex*,gsl_complex*]*)
  118. (bind-alias gsl_poly_complex_workspace i8)
  119. (bind-lib gsllib gsl_poly_complex_workspace_alloc [gsl_poly_complex_workspace*,size_t]*)
  120. (bind-lib gsllib gsl_poly_complex_workspace_free [void,gsl_poly_complex_workspace*]*)
  121. (bind-lib gsllib gsl_poly_complex_solve [i32,double*,size_t,gsl_poly_complex_workspace*,gsl_complex_packed_ptr]*)
  122. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  123. ;;
  124. ;; Special Functions
  125. ;;
  126. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  127. ;; trig functions
  128. (bind-lib gsllib gsl_sf_sin [double,double]*)
  129. (bind-lib gsllib gsl_sf_cos [double,double]*)
  130. (bind-lib gsllib gsl_sf_hypot [double,double]*)
  131. (bind-lib gsllib gsl_sf_sinc [double,double]*)
  132. (bind-lib gsllib gsl_sf_complex_sin_e [i32,double,double,gsl_sf_result*,gsl_sf_result*]*)
  133. (bind-lib gsllib gsl_sf_complex_cos_e [i32,double,double,gsl_sf_result*,gsl_sf_result*]*)
  134. (bind-lib gsllib gsl_sf_complex_logsin_e [i32,double,double,gsl_sf_result*,gsl_sf_result*]*)
  135. (bind-lib gsllib gsl_sf_lnsinh [double,double]*)
  136. (bind-lib gsllib gsl_sf_lncosh [double,double]*)
  137. (bind-lib gsllib gsl_sf_polar_to_rect [double,double,gsl_sf_result*,gsl_sf_result*]*)
  138. (bind-lib gsllib gsl_sf_rect_to_polar [double,double,gsl_sf_result*,gsl_sf_result*]*)
  139. (bind-lib gsllib gsl_sf_angle_restrict_symm [double,double]*)
  140. (bind-lib gsllib gsl_sf_angle_restrict_pos [double,double]*)
  141. ;; zeta functions
  142. (bind-lib gsllib gsl_sf_zeta_int [double,i32]*)
  143. (bind-lib gsllib gsl_sf_zeta [double,double]*)
  144. (bind-lib gsllib gsl_sf_zetam1_int [double,i32]*)
  145. (bind-lib gsllib gsl_sf_zetam1 [double,double]*)
  146. (bind-lib gsllib gsl_sf_hzeta [double,double,double]*)
  147. (bind-lib gsllib gsl_sf_eta_int [double,i32]*)
  148. (bind-lib gsllib gsl_sf_eta [double,double]*)
  149. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  150. ;;
  151. ;; Permutations and Combintations
  152. ;;
  153. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  154. (bind-lib gsllib gsl_permutation_alloc [gsl_permutation*,size_t]*)
  155. (bind-lib gsllib gsl_permutation_calloc [gsl_permutation*,size_t]*)
  156. (bind-lib gsllib gsl_permutation_init [void,gsl_permutation*]*)
  157. (bind-lib gsllib gsl_permutation_free [void,gsl_permutation*]*)
  158. (bind-lib gsllib gsl_permutation_memcpy [i32,gsl_permutation*,gsl_permutation*]*)
  159. (bind-lib gsllib gsl_permutation_get [size_t,gsl_permutation*,size_t]*)
  160. (bind-lib gsllib gsl_permutation_swap [i32,gsl_permutation*,size_t,size_t]*)
  161. (bind-lib gsllib gsl_permutation_size [size_t,gsl_permutation*]*)
  162. (bind-lib gsllib gsl_permutation_data [size_t,gsl_permutation*]*)
  163. (bind-lib gsllib gsl_permutation_valid [i32,gsl_permutation*]*)
  164. (bind-lib gsllib gsl_permutation_reverse [void,gsl_permutation*]*)
  165. (bind-lib gsllib gsl_permutation_inverse [i32,gsl_permutation*,gsl_permutation*]*)
  166. (bind-lib gsllib gsl_permutation_next [i32,gsl_permutation*]*)
  167. (bind-lib gsllib gsl_permutation_prev [i32,gsl_permutation*]*)
  168. (bind-lib gsllib gsl_permute [i32,size_t*,double*,size_t,size_t]*)
  169. (bind-lib gsllib gsl_permute_inverse [i32,size_t*,double*,size_t,size_t]*)
  170. (bind-lib gsllib gsl_permute_vector [i32,gsl_permutation*,gsl_vector*]*)
  171. (bind-lib gsllib gsl_permute_vector_inverse [i32,gsl_permutation*,gsl_vector*]*)
  172. (bind-lib gsllib gsl_permutation_mul [i32,gsl_permutation*,gsl_permutation*,gsl_permutation*]*)
  173. (bind-lib gsllib gsl_permutation_fwrite [i32,i8*,gsl_permutation*]*)
  174. (bind-lib gsllib gsl_permutation_fread [i32,i8*,gsl_permutation*]*)
  175. (bind-lib gsllib gsl_permutation_linear_to_canonical [i32,gsl_permutation*,gsl_permutation*]*)
  176. (bind-lib gsllib gsl_permutation_canonical_to_linear [i32,gsl_permutation*,gsl_permutation*]*)
  177. (bind-lib gsllib gsl_permutation_inversions [size_t,gsl_permutation*]*)
  178. (bind-lib gsllib gsl_permutation_linear_cycles [size_t,gsl_permutation*]*)
  179. (bind-lib gsllib gsl_permutation_canonical_cycles [size_t,gsl_permutation*]*)
  180. (bind-lib gsllib gsl_combination_alloc [gsl_combination*,size_t,size_t]*)
  181. (bind-lib gsllib gsl_combination_calloc [gsl_combination*,size_t,size_t]*)
  182. (bind-lib gsllib gsl_combination_init_first [void,gsl_combination*]*)
  183. (bind-lib gsllib gsl_combination_init_last [void,gsl_combination*]*)
  184. (bind-lib gsllib gsl_combination_free [void,gsl_combination*]*)
  185. (bind-lib gsllib gsl_combination_memcpy [i32,gsl_combination*,gsl_combination*]*)
  186. (bind-lib gsllib gsl_combination_get [size_t,gsl_combination*,size_t]*)
  187. (bind-lib gsllib gsl_combination_n [size_t,gsl_combination*]*)
  188. (bind-lib gsllib gsl_combination_k [size_t,gsl_combination*]*)
  189. (bind-lib gsllib gsl_combination_data [size_t*,gsl_combination*]*)
  190. (bind-lib gsllib gsl_combination_valid [i32,gsl_combination*]*)
  191. (bind-lib gsllib gsl_combination_next [i32,gsl_combination*]*)
  192. (bind-lib gsllib gsl_combination_prev [i32,gsl_combination*]*)
  193. (bind-lib gsllib gsl_combination_fwrite [i32,i8*,gsl_combination*]*)
  194. (bind-lib gsllib gsl_combination_fread [i32,i8*,gsl_combination*]*)
  195. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  196. ;;
  197. ;; MATRIX AND VECTOR STUFF
  198. ;;
  199. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  200. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  201. ;; blocks
  202. (bind-lib gsllib gsl_block_alloc [gsl_block*,size_t]*)
  203. (bind-lib gsllib gsl_block_calloc [gsl_block*,size_t]*)
  204. (bind-lib gsllib gsl_block_free [void,gsl_block*]*)
  205. ;; where i8* is FILE*
  206. (bind-lib gsllib gsl_block_fwrite [i32,i8*,gsl_block*]*)
  207. (bind-lib gsllib gsl_block_fread [i32,i8*,gsl_block*]*)
  208. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  209. ;; vectors
  210. ;; size,stride,data,block,owner
  211. (bind-lib gsllib gsl_vector_alloc [gsl_vector*,size_t]*)
  212. (bind-lib gsllib gsl_vector_calloc [gsl_vector*,size_t]*)
  213. (bind-lib gsllib gsl_vector_free [void,gsl_vector*]*)
  214. (bind-lib gsllib gsl_vector_get [double,gsl_vector*,size_t]*)
  215. (bind-lib gsllib gsl_vector_set [void,gsl_vector*,size_t,double]*)
  216. (bind-lib gsllib gsl_vector_ptr [double*,gsl_vector*,size_t]*)
  217. (bind-lib gsllib gsl_vector_set_all [void,gsl_vector*,double]*)
  218. (bind-lib gsllib gsl_vector_set_zero [void,gsl_vector*]*)
  219. (bind-lib gsllib gsl_vector_set_basis [i32,gsl_vector*,size_t]*)
  220. ;; where i8* is FILE*
  221. (bind-lib gsllib gsl_vector_fwrite [i32,i8*,gsl_vector*]*)
  222. (bind-lib gsllib gsl_vector_fread [i32,i8*,gsl_vector*]*)
  223. (bind-lib gsllib gsl_vector_memcpy [i32,gsl_vector*,gsl_vector*]*)
  224. (bind-lib gsllib gsl_vector_swap [i32,gsl_vector*,gsl_vector*]*)
  225. (bind-lib gsllib gsl_vector_swap_elements [i32,gsl_vector*,size_t,size_t]*)
  226. (bind-lib gsllib gsl_vector_reverse [i32,gsl_vector*]*)
  227. ;; result ends up in first vector (2nd vector unchanged)
  228. (bind-lib gsllib gsl_vector_add [i32,gsl_vector*,gsl_vector*]*)
  229. (bind-lib gsllib gsl_vector_sub [i32,gsl_vector*,gsl_vector*]*)
  230. (bind-lib gsllib gsl_vector_mul [i32,gsl_vector*,gsl_vector*]*)
  231. (bind-lib gsllib gsl_vector_div [i32,gsl_vector*,gsl_vector*]*)
  232. (bind-lib gsllib gsl_vector_scale [i32,gsl_vector*,double]*)
  233. (bind-lib gsllib gsl_vector_add_constant [i32,gsl_vector*,double]*)
  234. (bind-lib gsllib gsl_vector_max [double,gsl_vector*]*)
  235. (bind-lib gsllib gsl_vector_min [double,gsl_vector*]*)
  236. (bind-lib gsllib gsl_vector_max_index [size_t,gsl_vector*]*)
  237. (bind-lib gsllib gsl_vector_min_index [size_t,gsl_vector*]*)
  238. (bind-lib gsllib gsl_vector_isnull [i32,gsl_vector*]*)
  239. (bind-lib gsllib gsl_vector_ispos [i32,gsl_vector*]*)
  240. (bind-lib gsllib gsl_vector_isneg [i32,gsl_vector*]*)
  241. (bind-lib gsllib gsl_vector_isnonneg [i32,gsl_vector*]*)
  242. ;; (bind-lib gsllib gsl_vector_equal [i32,gsl_vector*,gsl_vector*]*)
  243. ;; VECTOR SORTING
  244. (bind-lib gsllib gsl_sort [void,double*,size_t,size_t]*)
  245. (bind-lib gsllib gsl_sort_vector [void,gsl_vector*]*)
  246. (bind-lib gsllib gsl_sort_index [void,size_t*,double*,size_t,size_t]*)
  247. (bind-lib gsllib gsl_sort_vector_index [i32,gsl_permutation*,gsl_vector*]*)
  248. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  249. ;; matrices
  250. ;;
  251. ;; rows first, columns second.
  252. ;;
  253. (bind-lib gsllib gsl_matrix_alloc [gsl_matrix*,size_t,size_t]*)
  254. (bind-lib gsllib gsl_matrix_calloc [gsl_matrix*,size_t,size_t]*)
  255. (bind-lib gsllib gsl_matrix_free [void,gsl_matrix*]*)
  256. (bind-lib gsllib gsl_matrix_get [double,gsl_matrix*,size_t,size_t]*)
  257. (bind-lib gsllib gsl_matrix_set [void,gsl_matrix*,size_t,size_t,double]*)
  258. (bind-lib gsllib gsl_matrix_ptr [double*,gsl_matrix*,size_t,size_t]*)
  259. (bind-lib gsllib gsl_matrix_set_all [void,gsl_matrix*,double]*)
  260. (bind-lib gsllib gsl_matrix_set_zero [void,gsl_matrix*]*)
  261. (bind-lib gsllib gsl_matrix_set_identity [void,gsl_matrix*]*)
  262. ;; where i8* is FILE*
  263. (bind-lib gsllib gsl_matrix_fwrite [i32,i8*,gsl_matrix*]*)
  264. (bind-lib gsllib gsl_matrix_fread [i32,i8*,gsl_matrix*]*)
  265. ;; dest first src second
  266. (bind-lib gsllib gsl_matrix_memcpy [i32,gsl_matrix*,gsl_matrix*]*)
  267. ;; swap elements of a and b (by copy)
  268. (bind-lib gsllib gsl_matrix_swap [i32,gsl_matrix*,gsl_matrix*]*)
  269. ;; get set by row/col
  270. (bind-lib gsllib gsl_matrix_get_row [i32,gsl_vector*,gsl_matrix*,size_t]*)
  271. (bind-lib gsllib gsl_matrix_get_col [i32,gsl_vector*,gsl_matrix*,size_t]*)
  272. (bind-lib gsllib gsl_matrix_set_row [i32,gsl_matrix*,size_t,gsl_vector*]*)
  273. (bind-lib gsllib gsl_matrix_set_col [i32,gsl_matrix*,size_t,gsl_vector*]*)
  274. ;; exchanging rows and cols
  275. (bind-lib gsllib gsl_matrix_swap_rows [i32,gsl_matrix*,size_t,size_t]*)
  276. (bind-lib gsllib gsl_matrix_swap_columns [i32,gsl_matrix*,size_t,size_t]*)
  277. (bind-lib gsllib gsl_matrix_swap_rowcol [i32,gsl_matrix*,size_t,size_t]*)
  278. (bind-lib gsllib gsl_matrix_transpose_memcpy [i32,gsl_matrix*,gsl_matrix*]*)
  279. (bind-lib gsllib gsl_matrix_transpose [i32,gsl_matrix*]*)
  280. ;; matrix ops
  281. (bind-lib gsllib gsl_matrix_add [i32,gsl_matrix*,gsl_matrix*]*)
  282. (bind-lib gsllib gsl_matrix_sub [i32,gsl_matrix*,gsl_matrix*]*)
  283. (bind-lib gsllib gsl_matrix_mul_elements [i32,gsl_matrix*,gsl_matrix*]*)
  284. (bind-lib gsllib gsl_matrix_div_elements [i32,gsl_matrix*,gsl_matrix*]*)
  285. (bind-lib gsllib gsl_matrix_scale [i32,gsl_matrix*,double]*)
  286. (bind-lib gsllib gsl_matrix_add_constant [i32,gsl_matrix*,double]*)
  287. (bind-lib gsllib gsl_matrix_max [double,gsl_matrix*]*)
  288. (bind-lib gsllib gsl_matrix_min [double,gsl_matrix*]*)
  289. (bind-lib gsllib gsl_matrix_max_index [void,gsl_matrix*,size_t*,size_t*]*)
  290. (bind-lib gsllib gsl_matrix_min_index [void,gsl_matrix*,size_t*,size_t*]*)
  291. (bind-lib gsllib gsl_matrix_isnull [i32,gsl_matrix*]*)
  292. (bind-lib gsllib gsl_matrix_ispos [i32,gsl_matrix*]*)
  293. (bind-lib gsllib gsl_matrix_isneg [i32,gsl_matrix*]*)
  294. (bind-lib gsllib gsl_matrix_isnonneg [i32,gsl_matrix*]*)
  295. ;(bind-lib gsllib gsl_matrix_equal [i32,gsl_matrix*,gsl_matrix*]*)
  296. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  297. ;;
  298. ;; Linear Algebra
  299. ;;
  300. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  301. (bind-lib gsllib gsl_linalg_LU_decomp [i32,gsl_matrix*,gsl_permutation*,i32*]*)
  302. (bind-lib gsllib gsl_linalg_complex_LU_decomp [i32,gsl_matrix_complex*,gsl_permutation*,i32*]*)
  303. (bind-lib gsllib gsl_linalg_LU_solve [i32,gsl_matrix*,gsl_permutation*,gsl_vector*,gsl_vector*]*)
  304. (bind-lib gsllib gsl_linalg_complex_LU_solve [i32,gsl_matrix_complex*,gsl_permutation*,gsl_vector_complex*,gsl_vector_complex*]*)
  305. (bind-lib gsllib gsl_linalg_LU_svx [i32,gsl_matrix*,gsl_permutation*,gsl_vector*]*)
  306. (bind-lib gsllib gsl_linalg_complex_LU_svx [i32,gsl_matrix_complex*,gsl_permutation*,gsl_vector_complex*]*)
  307. (bind-lib gsllib gsl_linalg_LU_refine [i32,gsl_matrix*,gsl_matrix*,gsl_permutation*,gsl_vector*,gsl_vector*,gsl_vector*]*)
  308. (bind-lib gsllib gsl_linalg_complex_LU_refine [i32,gsl_matrix_complex*,gsl_matrix_complex*,gsl_permutation*,gsl_vector_complex*,gsl_vector_complex*,gsl_vector_complex*]*)
  309. (bind-lib gsllib gsl_linalg_LU_invert [i32,gsl_matrix*,gsl_permutation*,gsl_matrix*]*)
  310. (bind-lib gsllib gsl_linalg_complex_LU_invert [i32,gsl_matrix_complex*,gsl_permutation*,gsl_matrix_complex*]*)
  311. (bind-lib gsllib gsl_linalg_LU_det [double,gsl_matrix*,i32]*)
  312. (bind-lib gsllib gsl_linalg_complex_LU_det [double,gsl_matrix_complex*,i32]*)
  313. (bind-lib gsllib gsl_linalg_LU_lndet [double,gsl_matrix*]*)
  314. (bind-lib gsllib gsl_linalg_complex_LU_lndet [double,gsl_matrix_complex*]*)
  315. (bind-lib gsllib gsl_linalg_LU_sgndet [double,gsl_matrix*,i32]*)
  316. (bind-lib gsllib gsl_linalg_complex_LU_sgndet [double,gsl_matrix_complex*,i32]*)
  317. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  318. ;;
  319. ;; Statistics
  320. ;;
  321. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  322. (bind-lib gsllib gsl_stats_mean [double,double*,size_t,size_t]*)
  323. (bind-lib gsllib gsl_stats_variance [double,double*,size_t,size_t]*)
  324. (bind-lib gsllib gsl_stats_variance_m [double,double*,size_t,size_t,double]*)
  325. (bind-lib gsllib gsl_stats_sd [double,double*,size_t,size_t]*)
  326. (bind-lib gsllib gsl_stats_sd_m [double,double*,size_t,size_t,double]*)
  327. (bind-lib gsllib gsl_stats_tss [double,double*,size_t,size_t]*)
  328. (bind-lib gsllib gsl_stats_tss_m [double,double*,size_t,size_t,double]*)
  329. (bind-lib gsllib gsl_stats_variance_with_fixed_mean [double,double*,size_t,size_t,double]*)
  330. (bind-lib gsllib gsl_stats_sd_with_fixed_mean [double,double*,size_t,size_t,double]*)
  331. (bind-lib gsllib gsl_stats_absdev [double,double*,size_t,size_t]*)
  332. (bind-lib gsllib gsl_stats_absdev_m [double,double*,size_t,size_t,double]*)
  333. (bind-lib gsllib gsl_stats_skew [double,double*,size_t,size_t]*)
  334. (bind-lib gsllib gsl_stats_skew_m_sd [double,double*,size_t,size_t,double,double]*)
  335. (bind-lib gsllib gsl_stats_kurtosis [double,double*,size_t,size_t]*)
  336. (bind-lib gsllib gsl_stats_kurtosis_m_sd [double,double*,size_t,size_t,double,double]*)
  337. (bind-lib gsllib gsl_stats_lag1_autocorrelation [double,double*,size_t,size_t]*)
  338. (bind-lib gsllib gsl_stats_lag1_autocorrelation_m [double,double*,size_t,size_t,double]*)
  339. (bind-lib gsllib gsl_stats_covariance [double,double*,size_t,double*,size_t,size_t]*)
  340. (bind-lib gsllib gsl_stats_covariance_m [double,double*,size_t,double*,size_t,size_t,double,double]*)
  341. (bind-lib gsllib gsl_stats_correlation [double,double*,size_t,double*,size_t,size_t]*)
  342. (bind-lib gsllib gsl_stats_wmean [double,double*,size_t,double*,size_t,size_t]*)
  343. (bind-lib gsllib gsl_stats_wvariance [double,double*,size_t,double*,size_t,size_t]*)
  344. (bind-lib gsllib gsl_stats_wvariance_m [double,double*,size_t,double*,size_t,size_t,double]*)
  345. (bind-lib gsllib gsl_stats_wsd [double,double*,size_t,double*,size_t,size_t]*)
  346. (bind-lib gsllib gsl_stats_wsd_m [double,double*,size_t,double*,size_t,size_t,double]*)
  347. (bind-lib gsllib gsl_stats_wtss [double,double*,size_t,double*,size_t,size_t]*)
  348. (bind-lib gsllib gsl_stats_wtss_m [double,double*,size_t,double*,size_t,size_t,double]*)
  349. (bind-lib gsllib gsl_stats_wvariance_with_fixed_mean [double,double*,size_t,double*,size_t,size_t,double]*)
  350. (bind-lib gsllib gsl_stats_wsd_with_fixed_mean [double,double*,size_t,double*,size_t,size_t,double]*)
  351. (bind-lib gsllib gsl_stats_wabsdev [double,double*,size_t,double*,size_t,size_t]*)
  352. (bind-lib gsllib gsl_stats_wabsdev_m [double,double*,size_t,double*,size_t,size_t,double]*)
  353. (bind-lib gsllib gsl_stats_wskew [double,double*,size_t,double*,size_t,size_t]*)
  354. (bind-lib gsllib gsl_stats_wskew_m_sd [double,double*,size_t,double*,size_t,size_t,double,double]*)
  355. (bind-lib gsllib gsl_stats_wkurtosis [double,double*,size_t,double*,size_t,size_t]*)
  356. (bind-lib gsllib gsl_stats_wkurtosis_m_sd [double,double*,size_t,double*,size_t,size_t,double,double]*)
  357. (bind-lib gsllib gsl_stats_max [double,double*,size_t,size_t]*)
  358. (bind-lib gsllib gsl_stats_min [double,double*,size_t,size_t]*)
  359. (bind-lib gsllib gsl_stats_max_index [size_t,double*,size_t,size_t]*)
  360. (bind-lib gsllib gsl_stats_min_index [size_t,double*,size_t,size_t]*)
  361. (bind-lib gsllib gsl_stats_median_from_sorted_data [double,double*,size_t,size_t]*)
  362. (bind-lib gsllib gsl_stats_quantile_from_sorted_data [double,double*,size_t,size_t,double]*)