@@ -33,7 +33,9 @@ define function gsl-vector-copy
3333 (a :: <gsl-vector>)
3434 => (b :: <gsl-vector>)
3535 let b = make (<gsl-vector>, size: a.size );
36- ffi/gsl-vector-memcpy(b.%gsl-vector, a.%gsl-vector);
36+ with-gsl-check-success ()
37+ ffi/gsl-vector-memcpy(b.%gsl-vector, a.%gsl-vector);
38+ end ;
3739 b
3840end ;
3941
@@ -101,15 +103,19 @@ end;
101103
102104define function set-basis!
103105 (v :: <gsl-vector>, index :: <integer> )
104- => (v :: <gsl-vector>)
105- ffi/gsl-vector-set-basis(v.%gsl-vector, index);
106+ => (v :: <gsl-vector>)
107+ with-gsl-check-success ()
108+ ffi/gsl-vector-set-basis(v.%gsl-vector, index);
109+ end ;
106110 v
107111end ;
108112
109113define function swap!
110- (v :: <gsl-vector>, i :: <integer> , j :: <integer> )
111- => (v :: <gsl-vector>)
112- ffi/gsl-vector-swap-elements(v.%gsl-vector, i, j);
114+ (v :: <gsl-vector>, i :: <integer> , j :: <integer> )
115+ => (v :: <gsl-vector>)
116+ with-gsl-check-success ()
117+ ffi/gsl-vector-swap-elements(v.%gsl-vector, i, j);
118+ end ;
113119 v
114120end ;
115121
@@ -134,39 +140,49 @@ define method \+
134140 (a :: <gsl-vector>, b :: <gsl-vector>)
135141=> (sum :: <gsl-vector>)
136142 let sum = a.gsl-vector-copy;
137- ffi/gsl-vector-add(sum.%gsl-vector, b.%gsl-vector);
143+ with-gsl-check-success ()
144+ ffi/gsl-vector-add(sum.%gsl-vector, b.%gsl-vector);
145+ end ;
138146 sum
139147end ;
140148
141149define method \-
142150 (a :: <gsl-vector>, b :: <gsl-vector>)
143151=> (diff :: <gsl-vector>)
144152 let diff = a.gsl-vector-copy;
145- ffi/gsl-vector-sub(diff.%gsl-vector, b.%gsl-vector);
153+ with-gsl-check-success ()
154+ ffi/gsl-vector-sub(diff.%gsl-vector, b.%gsl-vector);
155+ end ;
146156 diff
147157end ;
148158
149159define method \*
150160 (a :: <gsl-vector>, b :: <gsl-vector>)
151161=> (product :: <gsl-vector>)
152162 let product = a.gsl-vector-copy;
153- ffi/gsl-vector-mul(product.%gsl-vector, b.%gsl-vector);
163+ with-gsl-check-success ()
164+ ffi/gsl-vector-mul(product.%gsl-vector, b.%gsl-vector);
165+ end ;
154166 product
155167end ;
156168
157169define method \/
158170 (a :: <gsl-vector>, b :: <gsl-vector>)
159171=> (division :: <gsl-vector>)
160172 let dividend = a.gsl-vector-copy;
161- ffi/gsl-vector-div(dividend.%gsl-vector, b.%gsl-vector);
173+ with-gsl-check-success ()
174+ ffi/gsl-vector-div(dividend.%gsl-vector, b.%gsl-vector);
175+ end ;
162176 dividend
163177end ;
164178
165179define method \*
166180 (a :: <gsl-vector>, value :: <double-float> )
167181=> (scaled :: <gsl-vector>)
168182 let scaled = a.gsl-vector-copy;
169- ffi/gsl-vector-scale(scaled.%gsl-vector, value);
183+ with-gsl-check-success ()
184+ ffi/gsl-vector-scale(scaled.%gsl-vector, value);
185+ end ;
170186 scaled
171187end ;
172188
@@ -180,7 +196,9 @@ define method \+
180196 (a :: <gsl-vector>, value :: <double-float> )
181197=> (v :: <gsl-vector>)
182198 let v = a.gsl-vector-copy;
183- ffi/gsl-vector-add-constant(v.%gsl-vector, value);
199+ with-gsl-check-success ()
200+ ffi/gsl-vector-add-constant(v.%gsl-vector, value);
201+ end ;
184202 v
185203end ;
186204
@@ -194,7 +212,9 @@ define function axpby
194212 (alpha :: <double-float> , x :: <gsl-vector>, beta :: <double-float> , y :: <gsl-vector>)
195213=> (v :: <gsl-vector>)
196214 let v = y.gsl-vector-copy;
197- ffi/gsl-vector-axpby(alpha, x.%gsl-vector, beta, v.%gsl-vector);
215+ with-gsl-check-success ()
216+ ffi/gsl-vector-axpby(alpha, x.%gsl-vector, beta, v.%gsl-vector);
217+ end ;
198218 v
199219end ;
200220
0 commit comments