File: mlgsl_vector.c

package info (click to toggle)
orpie 1.5.2-2
  • links: PTS
  • area: main
  • in suites: buster
  • size: 1,924 kB
  • ctags: 2,720
  • sloc: ml: 13,872; ansic: 3,754; makefile: 310; sh: 11; python: 11
file content (124 lines) | stat: -rw-r--r-- 2,812 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
/* ocamlgsl - OCaml interface to GSL                        */
/* Copyright (©) 2002-2005 - Olivier Andrieu                */
/* distributed under the terms of the GPL version 2         */

#include <caml/alloc.h>

#ifndef FUNCTION
#error pb with include files
#endif

CAMLprim value FUNCTION(ml_gsl_vector,memcpy)(value a, value b)
{
  _DECLARE_VECTOR2(a,b);
  _CONVERT_VECTOR2(a,b);
  FUNCTION(gsl_vector,memcpy)(&v_b, &v_a);
  return Val_unit;
}

CAMLprim value FUNCTION(ml_gsl_vector,add)(value a, value b)
{
  _DECLARE_VECTOR2(a,b);
  _CONVERT_VECTOR2(a,b);
  FUNCTION(gsl_vector,add)(&v_a, &v_b);
  return Val_unit;
}

CAMLprim value FUNCTION(ml_gsl_vector,sub)(value a, value b)
{
  _DECLARE_VECTOR2(a,b);
  _CONVERT_VECTOR2(a,b);
  FUNCTION(gsl_vector,sub)(&v_a, &v_b);
  return Val_unit;
}

CAMLprim value FUNCTION(ml_gsl_vector,mul)(value a, value b)
{
  _DECLARE_VECTOR2(a,b);
  _CONVERT_VECTOR2(a,b);
  FUNCTION(gsl_vector,mul)(&v_a, &v_b);
  return Val_unit;
}

CAMLprim value FUNCTION(ml_gsl_vector,div)(value a, value b)
{
  _DECLARE_VECTOR2(a,b);
  _CONVERT_VECTOR2(a,b);
  FUNCTION(gsl_vector,div)(&v_a, &v_b);
  return Val_unit;
}

CAMLprim value FUNCTION(ml_gsl_vector,scale)(value a, value x)
{
  _DECLARE_VECTOR(a);
  _CONVERT_VECTOR(a);
  FUNCTION(gsl_vector,scale)(&v_a, Double_val(x));
  return Val_unit;
}

CAMLprim value FUNCTION(ml_gsl_vector,add_constant)(value a, value x)
{
  _DECLARE_VECTOR(a);
  _CONVERT_VECTOR(a);
  FUNCTION(gsl_vector,add_constant)(&v_a, Double_val(x));
  return Val_unit;
}

CAMLprim value FUNCTION(ml_gsl_vector,isnull)(value a)
{
  int r;
  _DECLARE_VECTOR(a);
  _CONVERT_VECTOR(a);
  r = FUNCTION(gsl_vector,isnull)(&v_a);
  return Val_bool(r);
}

CAMLprim value FUNCTION(ml_gsl_vector,max)(value a)
{
  _DECLARE_VECTOR(a);
  _CONVERT_VECTOR(a);
  return copy_double(FUNCTION(gsl_vector,max)(&v_a));
}

CAMLprim value FUNCTION(ml_gsl_vector,min)(value a)
{
  _DECLARE_VECTOR(a);
  _CONVERT_VECTOR(a);
  return copy_double(FUNCTION(gsl_vector,min)(&v_a));
}

CAMLprim value FUNCTION(ml_gsl_vector,minmax)(value a)
{
  BASE_TYPE x,y;
  _DECLARE_VECTOR(a);
  _CONVERT_VECTOR(a);
  FUNCTION(gsl_vector,minmax)(&v_a, &x, &y);
  return copy_two_double(x, y);
}

CAMLprim value FUNCTION(ml_gsl_vector,maxindex)(value a)
{
  _DECLARE_VECTOR(a);
  _CONVERT_VECTOR(a);
  return Val_int(FUNCTION(gsl_vector,max_index)(&v_a));
}

CAMLprim value FUNCTION(ml_gsl_vector,minindex)(value a)
{
  _DECLARE_VECTOR(a);
  _CONVERT_VECTOR(a);
  return Val_int(FUNCTION(gsl_vector,min_index)(&v_a));
}

CAMLprim value FUNCTION(ml_gsl_vector,minmaxindex)(value a)
{
  size_t x,y;
  value v;
  _DECLARE_VECTOR(a);
  _CONVERT_VECTOR(a);
  FUNCTION(gsl_vector,minmax_index)(&v_a, &x, &y);
  v=alloc_small(2, 0);
  Field(v, 0) = Val_int(x);
  Field(v, 1) = Val_int(y);
  return v;
}