Array_item *add_to_array (Array *array, Array_item *item) { int count; int location = 0; Array_item *ret = (void *) 0 ; u_32int_t mask; if (array->hash == HASH_INSENSITIVE) item->hash = ci_alist_hash(item->name, &mask); else item->hash = cs_alist_hash(item->name, &mask); check_array_size(array); if (array->max) { find_array_item(array, item->name, &count, &location); if (count < 0) { ret = ((Array_item *) (( array ) -> list [ ( location ) ])) ; array->max--; } else move_array_items(array, location, array->max, 1); } array->list[location] = item; array->max++; return ret; }
/* * Returns an entry that has been displaced, if any. */ Array_item *BX_add_to_array (Array *array, Array_item *item) { int count; int location = 0; Array_item *ret = NULL; u_32int_t mask; /* Dummy var */ if (array->hash == HASH_INSENSITIVE) item->hash = ci_alist_hash(item->name, &mask); else item->hash = cs_alist_hash(item->name, &mask); check_array_size(array); if (array->max) { find_array_item(array, item->name, &count, &location); if (count < 0) { ret = ARRAY_ITEM(array, location); array->max--; } else move_array_items(array, location, array->max, 1); } array->list[location] = item; array->max++; return ret; }
CAMLprim value ml_gsl_stats_covariance(value data1, value data2) { size_t len = Double_array_length(data1); double result; check_array_size(data1, data2); result = gsl_stats_covariance(Double_array_val(data1), 1, Double_array_val(data2), 1, len); return copy_double(result); }
/* Remove the 'which'th item from the given array */ array_item *array_pop (array *a, int which) { array_item *ret = NULL; if (which < 0 || which >= a->max) return NULL; ret = ARRAY_ITEM(a, which); move_array_items(a, which + 1, a->max, -1); a->max--; check_array_size(a); return ret; }
CAMLprim value ml_gsl_stats_mean(value ow, value data) { size_t len = Double_array_length(data); double result; if(ow == Val_none) result = gsl_stats_mean(Double_array_val(data), 1, len); else { value w = Unoption(ow); check_array_size(data, w); result = gsl_stats_wmean(Double_array_val(w), 1, Double_array_val(data), 1, len); } return copy_double(result); }
CAMLprim value ml_gsl_stats_kurtosis_m_sd(value ow, value mean, value sd, value data) { size_t len = Double_array_length(data); double result; if(ow == Val_none) result = gsl_stats_kurtosis_m_sd(Double_array_val(data), 1, len, Double_val(mean), Double_val(sd)); else { value w = Unoption(ow); check_array_size(data, w); result = gsl_stats_wkurtosis_m_sd(Double_array_val(w), 1, Double_array_val(data), 1, len, Double_val(mean), Double_val(sd)); } return copy_double(result); }
CAMLprim value ml_gsl_stats_variance(value ow, value omean, value data) { size_t len = Double_array_length(data); double result; if(ow == Val_none) if(omean == Val_none) result = gsl_stats_variance(Double_array_val(data), 1, len); else result = gsl_stats_variance_m(Double_array_val(data), 1, len, Double_val(Unoption(omean))); else { value w = Unoption(ow); check_array_size(data, w); if(omean == Val_none) result = gsl_stats_wvariance(Double_array_val(w), 1, Double_array_val(data), 1, len); else result = gsl_stats_wvariance_m(Double_array_val(w), 1, Double_array_val(data), 1, len, Double_val(Unoption(omean))); } return copy_double(result); }