caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] OCaml 3.04 Bigarray crashes in Mac OS X
@ 2002-08-02 18:34 Shivkumar Chandrasekaran
  0 siblings, 0 replies; only message in thread
From: Shivkumar Chandrasekaran @ 2002-08-02 18:34 UTC (permalink / raw)
  To: caml-list

[-- Attachment #1: Type: text/plain, Size: 1069 bytes --]

Hi,

I am using OCaml 3.04 interfaced to ATLAS BLAS and LAPACK (via camlidl) 
on Mac OS X (10.1.5). My program crashes (segfaults, bus errors, etc.) 
with both ocamlc and ocamlopt. The errors are bizarre. Adding nops 
sometimes will eliminate the crashes. I ran the ocamlopt version under 
gdb and it caught one such instance as

> Program received signal EXC_BAD_ACCESS, Could not access memory.
> 0x005564f4 in bigarray_update_proxy (b1=0x1daca28, b2=0x2509fe8) at 
> bigarray_stubs.c:746
> 746         ++ b1->proxy->refcount;
> (gdb) bt
> #0  0x005564f4 in bigarray_update_proxy (b1=0x1daca28, b2=0x2509fe8) at 
> bigarray_stubs.c:746
> #1  0x00556bdc in bigarray_reshape (vb=31115816, vdim=38838248) at 
> bigarray_stubs.c:972
> #2  0x0055712c in caml_c_call ()
> Cannot access memory at address 0x36101e8
>

I have not been able to come up with a nice small program that captures 
this bug. Has anyone else been having this problem? I suspect that I 
goofed somewhere in my IDL files, which I have attached below. Any help 
will be appreciated. Thanks,

--shiv--


[-- Attachment #2: lapack.idl --]
[-- Type: application/octet-stream, Size: 20643 bytes --]

/*
  File: lapack.idl
  Package: CamlFloat
  Purpose: (Caml)IDL for CBLAS and LAPACK and FFTPACK
  Author: Shivkumar Chandrasekaran
  Email: shiv@ece.ucsb.edu
  Date: 11.13.2001
  Warn: Keep lapack.h in sync with this file. Otherwise C will assume
        everything is an int!

  $Id:
  $Log:
*/

/*
  Note: This uses CUSTOM fftpack files that can be found in
  ../dfftpack/ and ../fftpack for double and single respectively.
*/

enum CBLAS_ORDER {CblasRowMajor=101, CblasColMajor=102 };

enum CBLAS_TRANSPOSE {CblasNoTrans=111, CblasTrans=112, CblasConjTrans=113,
                         AtlasConj=114};

/******************************
 * Double Precision Interface *
 ******************************
 */

double dlange_ ([ref] char *norm, [ref,in] long int *m,
		[ref,in] long int *n,
		[bigarray,fortran,in,out] double a[], [ref,in] long int *lda,
		[bigarray,fortran,in,out] double work[]);

void dlacpy_([ref] char *uplo, [ref,in] long int *m, [ref,in] long int *n,
	     [bigarray,fortran,in,out] double a[], [ref,in] long int *lda,
	     [bigarray,fortran,in,out] double b[], [ref,in] long int *ldb);

void dgelqf_ ([ref,in] long int *m, [ref,in] long int *n,
	      [bigarray,fortran,in,out] double a[], [ref,in] long int *lda,
	      [bigarray,fortran,in,out] double tau[],
	      [bigarray,fortran,in,out] double work[],
	      [ref,in] long int *lwork, [ref,out] long int *info);

void dormlq_ ([ref,in] char *side, [ref,in] char *trans, [ref,in] long int *m,
	      [ref,in] long int *n, [ref,in] long int *k,
	      [bigarray,fortran,in,out] double a[], [ref,in] long int *lda,
	      [bigarray,fortran,in] double tau[],
	      [bigarray,fortran,in,out] double c[], [ref,in] long int *ldc,
	      [bigarray,fortran,in,out] double work[],
	      [ref,in] long int *lwork, [ref,out] long int *info);

void dgeqlf_ ([ref,in] long int *m, [ref,in] long int *n,
	      [bigarray,fortran,in,out] double a[], [ref,in] long int *lda,
	      [bigarray,fortran,in,out] double tau[],
	      [bigarray,fortran,in,out] double work[],
	      [ref,in] long int *lwork, [ref,out] long int *info);

void dormql_ ([ref,in] char *side, [ref,in] char *trans, [ref,in] long int *m,
	      [ref,in] long int *n, [ref,in] long int *k,
	      [bigarray,fortran,in,out] double a[], [ref,in] long int *lda,
	      [bigarray,fortran,in] double tau[],
	      [bigarray,fortran,in,out] double c[], [ref,in] long int *ldc,
	      [bigarray,fortran,in,out] double work[],
	      [ref,in] long int *lwork, [ref,out] long int *info);

void dgels_ ([ref,in] char *trans, [ref,in] long int *m, [ref,in] long int *n,
	     [ref,in] long int *nrhs, [bigarray,fortran,in,out] double a[],
	     [ref,in] long int *lda, [bigarray,fortran,in,out] double b[],
	     [ref,in] long int *ldb, [bigarray,fortran,in,out] double work[],
	     [ref,in] long int *lwork, [ref,out] long int *info);

void dtrtrs_ ([ref,in] char *uplo, [ref,in] char *trans, [ref,in] char *diag,
	      [ref,in] long int *n, [ref,in]long int *nrhs,
	      [bigarray,fortran,in,out] double a[], [ref,in] long int *lda,
	      [bigarray,fortran,in,out] double b[], [ref,in] long int *ldb,
	      [ref,out] long int *info);

void dgesvd_ ([ref,in] char *jobu, [ref,in] char *jobvt, [ref,in] long int *m,
	      [ref,in] long int *n, [bigarray,fortran,in,out] double a[],
	      [ref,in] long int *lda, [bigarray,fortran,in,out] double s[],
	      [bigarray,fortran,in,out] double u[], [ref,in] long int *ldu,
	      [bigarray,fortran,in,out] double vt[], [ref,in] long int *ldvt,
	      [bigarray,fortran,in,out] double work[],
	      [ref,in] long int *lwork, [ref,out] long int *info);

void dgesdd_ ([ref,in] char *jobz, [ref,in] long int *m, [ref,in] long int *n,
	      [bigarray,fortran,in,out] double a[], [ref,in] long int *lda,
	      [bigarray,fortran,in,out] double s[],
	      [bigarray,fortran,in,out] double u[], [ref,in] long int *ldu,
	      [bigarray,fortran,in,out] double vt[], [ref,in] long int *ldvt,
	      [bigarray,fortran,in,out] double work[],
	      [ref,in] long int *lwork,
	      [bigarray,fortran,in,out] double iwork[],
	      [ref,out] long int *info);

void cblas_dgemm([in] enum CBLAS_ORDER Order, [in] enum CBLAS_TRANSPOSE TransA,
		 [in] enum CBLAS_TRANSPOSE TransB, [in] int M, [in] int N,
		 [in] int K,
		 [in] double alpha, [bigarray,fortran,in] double A[],
		 [in] int lda, [bigarray,fortran,in] double B[],
		 [in] int ldb, [in] double beta,
		 [bigarray,fortran,in,out] double C[], [in] int ldc);

void cblas_dscal([in] int N, [in] double alpha,
		 [bigarray,fortran,in,out] double X[], [in] int incX);

void cblas_dgbmv([in] enum CBLAS_ORDER Order,
                 [in] enum CBLAS_TRANSPOSE TransA, [in] int M, [in] int N,
                 [in] int KL, [in] int KU, [in] double alpha,
                 [bigarray,fortran,in,out] double A[], [in] int lda,
		 [bigarray,fortran,in,out] double X[], [in] int incX,
		 [in] double beta,
		 [bigarray,fortran,in,out] double Y[], [in] int incY);

void dcosqi_ ([ref,in] long int *n, [bigarray,fortran,in,out] double wsave[]);

void dcosqf_ ([ref,in] long int *n, [bigarray,fortran,in,out] double x[],
	      [bigarray,fortran,in,out] double wsave[]);

void dcosqb_ ([ref,in] long int *n, [bigarray,fortran,in,out] double x[],
	      [bigarray,fortran,in,out] double wsave[]);


/******************************
 * Single Precision Interface *
 ******************************
 */

float slange_ ([ref] char *norm, [ref,in] long int *m,
		[ref,in] long int *n,
		[bigarray,fortran,in,out] float a[], [ref,in] long int *lda,
		[bigarray,fortran,in,out] float work[]);

void slacpy_([ref] char *uplo, [ref,in] long int *m, [ref,in] long int *n,
	     [bigarray,fortran,in,out] float a[], [ref,in] long int *lda,
	     [bigarray,fortran,in,out] float b[], [ref,in] long int *ldb);

void sgelqf_ ([ref,in] long int *m, [ref,in] long int *n,
	      [bigarray,fortran,in,out] float a[], [ref,in] long int *lda,
	      [bigarray,fortran,in,out] float tau[],
	      [bigarray,fortran,in,out] float work[],
	      [ref,in] long int *lwork, [ref,out] long int *info);

void sormlq_ ([ref,in] char *side, [ref,in] char *trans, [ref,in] long int *m,
	      [ref,in] long int *n, [ref,in] long int *k,
	      [bigarray,fortran,in,out] float a[], [ref,in] long int *lda,
	      [bigarray,fortran,in] float tau[],
	      [bigarray,fortran,in,out] float c[], [ref,in] long int *ldc,
	      [bigarray,fortran,in,out] float work[],
	      [ref,in] long int *lwork, [ref,out] long int *info);

void sgeqlf_ ([ref,in] long int *m, [ref,in] long int *n,
	      [bigarray,fortran,in,out] float a[], [ref,in] long int *lda,
	      [bigarray,fortran,in,out] float tau[],
	      [bigarray,fortran,in,out] float work[],
	      [ref,in] long int *lwork, [ref,out] long int *info);

void sormql_ ([ref,in] char *side, [ref,in] char *trans, [ref,in] long int *m,
	      [ref,in] long int *n, [ref,in] long int *k,
	      [bigarray,fortran,in,out] float a[], [ref,in] long int *lda,
	      [bigarray,fortran,in] float tau[],
	      [bigarray,fortran,in,out] float c[], [ref,in] long int *ldc,
	      [bigarray,fortran,in,out] float work[],
	      [ref,in] long int *lwork, [ref,out] long int *info);

void sgels_ ([ref,in] char *trans, [ref,in] long int *m, [ref,in] long int *n,
	     [ref,in] long int *nrhs, [bigarray,fortran,in,out] float a[],
	     [ref,in] long int *lda, [bigarray,fortran,in,out] float b[],
	     [ref,in] long int *ldb, [bigarray,fortran,in,out] float work[],
	     [ref,in] long int *lwork, [ref,out] long int *info);

void strtrs_ ([ref,in] char *uplo, [ref,in] char *trans, [ref,in] char *diag,
	      [ref,in] long int *n, [ref,in]long int *nrhs,
	      [bigarray,fortran,in,out] float a[], [ref,in] long int *lda,
	      [bigarray,fortran,in,out] float b[], [ref,in] long int *ldb,
	      [ref,out] long int *info);

void sgesvd_ ([ref,in] char *jobu, [ref,in] char *jobvt, [ref,in] long int *m,
	      [ref,in] long int *n, [bigarray,fortran,in,out] float a[],
	      [ref,in] long int *lda, [bigarray,fortran,in,out] float s[],
	      [bigarray,fortran,in,out] float u[], [ref,in] long int *ldu,
	      [bigarray,fortran,in,out] float vt[], [ref,in] long int *ldvt,
	      [bigarray,fortran,in,out] float work[],
	      [ref,in] long int *lwork, [ref,out] long int *info);

void sgesdd_ ([ref,in] char *jobz, [ref,in] long int *m, [ref,in] long int *n,
	      [bigarray,fortran,in,out] float a[], [ref,in] long int *lda,
	      [bigarray,fortran,in,out] float s[],
	      [bigarray,fortran,in,out] float u[], [ref,in] long int *ldu,
	      [bigarray,fortran,in,out] float vt[], [ref,in] long int *ldvt,
	      [bigarray,fortran,in,out] float work[],
	      [ref,in] long int *lwork,
	      [bigarray,fortran,in,out] double iwork[],
	      [ref,out] long int *info);

void cblas_sgemm([in] enum CBLAS_ORDER Order, [in] enum CBLAS_TRANSPOSE TransA,
		 [in] enum CBLAS_TRANSPOSE TransB, [in] int M, [in] int N,
		 [in] int K,
		 [in] float alpha, [bigarray,fortran,in] float A[],
		 [in] int lda, [bigarray,fortran,in] float B[],
		 [in] int ldb, [in] float beta,
		 [bigarray,fortran,in,out] float C[], [in] int ldc);

void cblas_sscal([in] int N, [in] float alpha,
		 [bigarray,fortran,in,out] float X[], [in] int incX);

void cblas_sgbmv([in] enum CBLAS_ORDER Order,
                 [in] enum CBLAS_TRANSPOSE TransA, [in] int M, [in] int N,
                 [in] int KL, [in] int KU, [in] float alpha,
                 [bigarray,fortran,in,out] float A[], [in] int lda,
		 [bigarray,fortran,in,out] float X[], [in] int incX,
		 [in] float beta,
		 [bigarray,fortran,in,out] float Y[], [in] int incY);

void cosqi_ ([ref,in] long int *n, [bigarray,fortran,in,out] float wsave[]);

void cosqf_ ([ref,in] long int *n, [bigarray,fortran,in,out] float x[],
	      [bigarray,fortran,in,out] float wsave[]);

void cosqb_ ([ref,in] long int *n, [bigarray,fortran,in,out] float x[],
	      [bigarray,fortran,in,out] float wsave[]);


/****************************
 * Double Complex Interface *
 ****************************
 */

/* We pretend that complex arrays are double arrays in the idl file, since
   that is how we interface to it. */

/* Note lda of the complex array a! */
double zlange_ ([ref] char *norm, [ref,in] long int *m,
		[ref,in] long int *n,
		[bigarray,fortran,in,out] double a[], [ref,in] long int *lda,
		[bigarray,fortran,in,out] double work[]);

/* lda and ldb are for complex arrays a and b */
void zlacpy_([ref] char *uplo, [ref,in] long int *m, [ref,in] long int *n,
	     [bigarray,fortran,in,out] double a[], [ref,in] long int *lda,
	     [bigarray,fortran,in,out] double b[], [ref,in] long int *ldb);

/* lda, lwork are for complex a and work */
void zgelqf_ ([ref,in] long int *m, [ref,in] long int *n,
	      [bigarray,fortran,in,out] double a[], [ref,in] long int *lda,
	      [bigarray,fortran,in,out] double tau[],
	      [bigarray,fortran,in,out] double work[],
	      [ref,in] long int *lwork, [ref,out] long int *info);

/* dormlq -> zunmlq */
/* a, c, tau, work are complex arrays */
void zunmlq_ ([ref,in] char *side, [ref,in] char *trans, [ref,in] long int *m,
	      [ref,in] long int *n, [ref,in] long int *k,
	      [bigarray,fortran,in,out] double a[], [ref,in] long int *lda,
	      [bigarray,fortran,in] double tau[],
	      [bigarray,fortran,in,out] double c[], [ref,in] long int *ldc,
	      [bigarray,fortran,in,out] double work[],
	      [ref,in] long int *lwork, [ref,out] long int *info);

/* a, tau, work are complex arrays */
void zgeqlf_ ([ref,in] long int *m, [ref,in] long int *n,
	      [bigarray,fortran,in,out] double a[], [ref,in] long int *lda,
	      [bigarray,fortran,in,out] double tau[],
	      [bigarray,fortran,in,out] double work[],
	      [ref,in] long int *lwork, [ref,out] long int *info);

/* dormql -> zunmql */
/* a, c, tau and work are complex arrays. */
void zunmql_ ([ref,in] char *side, [ref,in] char *trans, [ref,in] long int *m,
	      [ref,in] long int *n, [ref,in] long int *k,
	      [bigarray,fortran,in,out] double a[], [ref,in] long int *lda,
	      [bigarray,fortran,in] double tau[],
	      [bigarray,fortran,in,out] double c[], [ref,in] long int *ldc,
	      [bigarray,fortran,in,out] double work[],
	      [ref,in] long int *lwork, [ref,out] long int *info);

/* a, b, work are complex arrays. */
void zgels_ ([ref,in] char *trans, [ref,in] long int *m, [ref,in] long int *n,
	     [ref,in] long int *nrhs, [bigarray,fortran,in,out] double a[],
	     [ref,in] long int *lda, [bigarray,fortran,in,out] double b[],
	     [ref,in] long int *ldb, [bigarray,fortran,in,out] double work[],
	     [ref,in] long int *lwork, [ref,out] long int *info);

/*  a and b are complex arrays. */
void ztrtrs_ ([ref,in] char *uplo, [ref,in] char *trans, [ref,in] char *diag,
	      [ref,in] long int *n, [ref,in]long int *nrhs,
	      [bigarray,fortran,in,out] double a[], [ref,in] long int *lda,
	      [bigarray,fortran,in,out] double b[], [ref,in] long int *ldb,
	      [ref,out] long int *info);

/* a, u, vt, work are complex arrays.
   double rwork[5*min(M,N)] */
void zgesvd_ ([ref,in] char *jobu, [ref,in] char *jobvt, [ref,in] long int *m,
	      [ref,in] long int *n, [bigarray,fortran,in,out] double a[],
	      [ref,in] long int *lda, [bigarray,fortran,in,out] double s[],
	      [bigarray,fortran,in,out] double u[], [ref,in] long int *ldu,
	      [bigarray,fortran,in,out] double vt[], [ref,in] long int *ldvt,
	      [bigarray,fortran,in,out] double work[],
	      [ref,in] long int *lwork,
	      [bigarray,fortran,in,out] double rwork[],
	      [ref,out] long int *info);

/* a, u, vt, and work are complex arrays */
void zgesdd_ ([ref,in] char *jobz, [ref,in] long int *m, [ref,in] long int *n,
	      [bigarray,fortran,in,out] double a[], [ref,in] long int *lda,
	      [bigarray,fortran,in,out] double s[],
	      [bigarray,fortran,in,out] double u[], [ref,in] long int *ldu,
	      [bigarray,fortran,in,out] double vt[], [ref,in] long int *ldvt,
	      [bigarray,fortran,in,out] double work[],
	      [ref,in] long int *lwork,
	      [bigarray,fortran,in,out] double rwork[],
	      [bigarray,fortran,in,out] double iwork[],
	      [ref,out] long int *info);

/* a, b, c are complex arrays. alpha and beta are complex numbers. */
void cblas_zgemm([in] enum CBLAS_ORDER Order, [in] enum CBLAS_TRANSPOSE TransA,
		 [in] enum CBLAS_TRANSPOSE TransB, [in] int M, [in] int N,
		 [in] int K,
		 [bigarray,fortran,in,out] double alpha[],
		 [bigarray,fortran,in] double A[],
		 [in] int lda, [bigarray,fortran,in] double B[],
		 [in] int ldb, [bigarray,fortran,in,out] double beta[],
		 [bigarray,fortran,in,out] double C[], [in] int ldc);

void cblas_zscal([in] int N, [bigarray,fortran,in,out] double alpha[],
		 [bigarray,fortran,in,out] double X[], [in] int incX);

void cblas_zdscal([in] int N, [in] double alpha,
		  [bigarray,fortran,in,out] double X[], [in] int incX);

void cblas_zgbmv([in] enum CBLAS_ORDER Order,
                 [in] enum CBLAS_TRANSPOSE TransA, [in] int M, [in] int N,
                 [in] int KL, [in] int KU,
		 [bigarray,fortran,in,out] double alpha[],
                 [bigarray,fortran,in,out] double A[], [in] int lda,
		 [bigarray,fortran,in,out] double X[], [in] int incX,
		 [bigarray,fortran,in,out] double beta[],
		 [bigarray,fortran,in,out] double Y[], [in] int incY);


/****************************
 * Single Complex Interface *
 ****************************
 */

/* We pretend that complex arrays are double arrays in the idl file, since
   that is how we interface to it. */

/* Note lda of the complex array a! */
float clange_ ([ref] char *norm, [ref,in] long int *m,
		[ref,in] long int *n,
		[bigarray,fortran,in,out] float a[], [ref,in] long int *lda,
		[bigarray,fortran,in,out] float work[]);

/* lda and ldb are for complex arrays a and b */
void clacpy_([ref] char *uplo, [ref,in] long int *m, [ref,in] long int *n,
	     [bigarray,fortran,in,out] float a[], [ref,in] long int *lda,
	     [bigarray,fortran,in,out] float b[], [ref,in] long int *ldb);

/* lda, lwork are for complex a and work */
void cgelqf_ ([ref,in] long int *m, [ref,in] long int *n,
	      [bigarray,fortran,in,out] float a[], [ref,in] long int *lda,
	      [bigarray,fortran,in,out] float tau[],
	      [bigarray,fortran,in,out] float work[],
	      [ref,in] long int *lwork, [ref,out] long int *info);

/* sormlq -> cunmlq */
/* a, c, tau, work are complex arrays */
void cunmlq_ ([ref,in] char *side, [ref,in] char *trans, [ref,in] long int *m,
	      [ref,in] long int *n, [ref,in] long int *k,
	      [bigarray,fortran,in,out] float a[], [ref,in] long int *lda,
	      [bigarray,fortran,in] float tau[],
	      [bigarray,fortran,in,out] float c[], [ref,in] long int *ldc,
	      [bigarray,fortran,in,out] float work[],
	      [ref,in] long int *lwork, [ref,out] long int *info);

/* a, tau, work are complex arrays */
void cgeqlf_ ([ref,in] long int *m, [ref,in] long int *n,
	      [bigarray,fortran,in,out] float a[], [ref,in] long int *lda,
	      [bigarray,fortran,in,out] float tau[],
	      [bigarray,fortran,in,out] float work[],
	      [ref,in] long int *lwork, [ref,out] long int *info);

/* sormql -> cunmql */
/* a, c, tau and work are complex arrays. */
void cunmql_ ([ref,in] char *side, [ref,in] char *trans, [ref,in] long int *m,
	      [ref,in] long int *n, [ref,in] long int *k,
	      [bigarray,fortran,in,out] float a[], [ref,in] long int *lda,
	      [bigarray,fortran,in] float tau[],
	      [bigarray,fortran,in,out] float c[], [ref,in] long int *ldc,
	      [bigarray,fortran,in,out] float work[],
	      [ref,in] long int *lwork, [ref,out] long int *info);

/* a, b, work are complex arrays. */
void cgels_ ([ref,in] char *trans, [ref,in] long int *m, [ref,in] long int *n,
	     [ref,in] long int *nrhs, [bigarray,fortran,in,out] float a[],
	     [ref,in] long int *lda, [bigarray,fortran,in,out] float b[],
	     [ref,in] long int *ldb, [bigarray,fortran,in,out] float work[],
	     [ref,in] long int *lwork, [ref,out] long int *info);

/*  a and b are complex arrays. */
void ctrtrs_ ([ref,in] char *uplo, [ref,in] char *trans, [ref,in] char *diag,
	      [ref,in] long int *n, [ref,in]long int *nrhs,
	      [bigarray,fortran,in,out] float a[], [ref,in] long int *lda,
	      [bigarray,fortran,in,out] float b[], [ref,in] long int *ldb,
	      [ref,out] long int *info);

/* a, u, vt, work are complex arrays.
   float rwork[5*min(M,N)] */
void cgesvd_ ([ref,in] char *jobu, [ref,in] char *jobvt, [ref,in] long int *m,
	      [ref,in] long int *n, [bigarray,fortran,in,out] float a[],
	      [ref,in] long int *lda, [bigarray,fortran,in,out] float s[],
	      [bigarray,fortran,in,out] float u[], [ref,in] long int *ldu,
	      [bigarray,fortran,in,out] float vt[], [ref,in] long int *ldvt,
	      [bigarray,fortran,in,out] float work[],
	      [ref,in] long int *lwork,
	      [bigarray,fortran,in,out] float rwork[],
	      [ref,out] long int *info);

/* a, u, vt, and work are complex arrays */
void cgesdd_ ([ref,in] char *jobz, [ref,in] long int *m, [ref,in] long int *n,
	      [bigarray,fortran,in,out] float a[], [ref,in] long int *lda,
	      [bigarray,fortran,in,out] float s[],
	      [bigarray,fortran,in,out] float u[], [ref,in] long int *ldu,
	      [bigarray,fortran,in,out] float vt[], [ref,in] long int *ldvt,
	      [bigarray,fortran,in,out] float work[],
	      [ref,in] long int *lwork,
	      [bigarray,fortran,in,out] float rwork[],
	      [bigarray,fortran,in,out] double iwork[],
	      [ref,out] long int *info);

/* a, b, c are complex arrays. alpha and beta are complex numbers. */
void cblas_cgemm([in] enum CBLAS_ORDER Order, [in] enum CBLAS_TRANSPOSE TransA,
		 [in] enum CBLAS_TRANSPOSE TransB, [in] int M, [in] int N,
		 [in] int K,
		 [bigarray,fortran,in,out] float alpha[],
		 [bigarray,fortran,in] float A[],
		 [in] int lda, [bigarray,fortran,in] float B[],
		 [in] int ldb, [bigarray,fortran,in,out] float beta[],
		 [bigarray,fortran,in,out] float C[], [in] int ldc);

void cblas_cscal([in] int N, [bigarray,fortran,in,out] float alpha[],
		 [bigarray,fortran,in,out] float X[], [in] int incX);

void cblas_csscal([in] int N, [in] float alpha,
		  [bigarray,fortran,in,out] float X[], [in] int incX);

void cblas_cgbmv([in] enum CBLAS_ORDER Order,
                 [in] enum CBLAS_TRANSPOSE TransA, [in] int M, [in] int N,
                 [in] int KL, [in] int KU,
		 [bigarray,fortran,in,out] float alpha[],
                 [bigarray,fortran,in,out] float A[], [in] int lda,
		 [bigarray,fortran,in,out] float X[], [in] int incX,
		 [bigarray,fortran,in,out] float beta[],
		 [bigarray,fortran,in,out] float Y[], [in] int incY);

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2002-08-03 21:31 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-08-02 18:34 [Caml-list] OCaml 3.04 Bigarray crashes in Mac OS X Shivkumar Chandrasekaran

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).