From: Shivkumar Chandrasekaran <shiv@ece.ucsb.edu>
To: caml-list@inria.fr
Subject: [Caml-list] OCaml 3.04 Bigarray crashes in Mac OS X
Date: Fri, 2 Aug 2002 11:34:43 -0700 [thread overview]
Message-ID: <838D6561-A646-11D6-9011-000393942C76@ece.ucsb.edu> (raw)
[-- 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);
reply other threads:[~2002-08-03 21:31 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=838D6561-A646-11D6-9011-000393942C76@ece.ucsb.edu \
--to=shiv@ece.ucsb.edu \
--cc=caml-list@inria.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox