rendered paste body#!/usr/bin/env /home/paco/hacking/cint/runme
-lgsl -lgslcblas -lm
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <stdarg.h>
#include <gsl/gsl_sf_bessel.h>
typedef struct structslice {
int d;
int *s;
} ss;
typedef struct structarray {
int d;
int *s;
double *b;
} sa;
ss csn(int dim, ...)
{
ss p;
p.d =dim;
p.s= (int *) malloc(2*dim*sizeof(int));
va_list ap;
va_start(ap,dim);
int lcv;
for (lcv=0;lcv<(2*dim);lcv=lcv+2){
p.s[lcv]= va_arg(ap,int);
p.s[lcv+1]= va_arg(ap,int);
}
va_end(ap);
return p;
}
sa can(int dim, ...)
{
sa p;
p.d =dim;
p.s= (int *) malloc(dim*sizeof(int));
va_list ap;
va_start(ap,dim);
int lcv;
int totnum=1;
for (lcv=0;lcv<dim;lcv++){
p.s[lcv]= va_arg(ap,int);
totnum*=p.s[lcv];
}
va_end(ap);
p.b= (double *) malloc(totnum*sizeof(double));
int lcv2;
for (lcv2=0;lcv2<totnum;lcv2++)
p.b[lcv2]= (double) lcv2;
return p;
}
void pab(int *elptr,int lev,int *p, sa a){
if (lev>0){
printf("[");
for (p[lev-1]=0;p[lev-1]<a.s[lev-1];p[lev-1]++)
pab(elptr,lev-1,p,a);
printf("]\n");
}
else {
printf("%5.8f ",a.b[*elptr]);
(*elptr)++;
}
}
void pa (sa a){
printf("Dimensions: %d\n",a.d);
printf("Shape: ");
int lcv;
for (lcv=0;lcv<a.d;lcv++){
printf("%d ",a.s[lcv]);
}
printf("\n");
int *p= (int *)malloc(a.d*sizeof(int));
int elptr=0;
pab(&elptr,a.d,p,a);
}
void ps (ss a){
printf("Dimensions: %d\n",a.d);
printf("Slice: ");
int lcv;
for (lcv=0;lcv<(2*a.d);lcv=lcv+2){
printf("[%d ",a.s[lcv]);
printf("%d] ",a.s[lcv+1]);
}
printf("\n");
}
// Create Array by Reading a file
sa car(char *s);
sa dau(sa a,double (*uop)(double)){
sa p;
p.d=a.d;
p.s= (int *) malloc(a.d*sizeof(int));
int lcv,lcv2,totnum=1;
for (lcv=0;lcv<a.d;lcv++){
p.s[lcv]=a.s[lcv];
totnum*=a.s[lcv];
}
p.b= (double *) malloc(totnum*sizeof(double));
for (lcv2=0;lcv2<totnum;lcv2++)
p.b[lcv2]=(*uop)(a.b[lcv2]);
return p;
}
int main(int argc, char* argv[]) {
sa a[10];
ss blah2=csn(3,0,10,0,5,0,6);
ps(blah2);
a[1]=can(1,10);
pa(a[1]);
// a[2]=dunary(a[1],cos);
a[2]=dau(a[1],gsl_sf_bessel_J0);
// printf("%d\n",a[1].s[2]);
pa(a[2]);
printf("Hellow, World\n");
printf("%g\n",sin(10));
}