/* [[file:~/qp2/src/utils/qsort.org::*Generated%20C%20file][Generated C file:1]] */ #include <stdlib.h> #include <stdint.h> struct int16_t_comp { int16_t x; int32_t i; }; int compare_int16_t( const void * l, const void * r ) { const int16_t * restrict _l= l; const int16_t * restrict _r= r; if( *_l > *_r ) return 1; if( *_l < *_r ) return -1; return 0; } void qsort_int16_t(int16_t* restrict A_in, int32_t* restrict iorder, int32_t isize) { struct int16_t_comp* A = malloc(isize * sizeof(struct int16_t_comp)); if (A == NULL) return; for (int i=0 ; i<isize ; ++i) { A[i].x = A_in[i]; A[i].i = iorder[i]; } qsort( (void*) A, (size_t) isize, sizeof(struct int16_t_comp), compare_int16_t); for (int i=0 ; i<isize ; ++i) { A_in[i] = A[i].x; iorder[i] = A[i].i; } free(A); } void qsort_int16_t_noidx(int16_t* A, int32_t isize) { qsort( (void*) A, (size_t) isize, sizeof(int16_t), compare_int16_t); } struct int16_t_comp_big { int16_t x; int64_t i; }; int compare_int16_t_big( const void * l, const void * r ) { const int16_t * restrict _l= l; const int16_t * restrict _r= r; if( *_l > *_r ) return 1; if( *_l < *_r ) return -1; return 0; } void qsort_int16_t_big(int16_t* restrict A_in, int64_t* restrict iorder, int64_t isize) { struct int16_t_comp_big* A = malloc(isize * sizeof(struct int16_t_comp_big)); if (A == NULL) return; for (int i=0 ; i<isize ; ++i) { A[i].x = A_in[i]; A[i].i = iorder[i]; } qsort( (void*) A, (size_t) isize, sizeof(struct int16_t_comp_big), compare_int16_t_big); for (int i=0 ; i<isize ; ++i) { A_in[i] = A[i].x; iorder[i] = A[i].i; } free(A); } void qsort_int16_t_noidx_big(int16_t* A, int64_t isize) { qsort( (void*) A, (size_t) isize, sizeof(int16_t), compare_int16_t_big); } struct int32_t_comp { int32_t x; int32_t i; }; int compare_int32_t( const void * l, const void * r ) { const int32_t * restrict _l= l; const int32_t * restrict _r= r; if( *_l > *_r ) return 1; if( *_l < *_r ) return -1; return 0; } void qsort_int32_t(int32_t* restrict A_in, int32_t* restrict iorder, int32_t isize) { struct int32_t_comp* A = malloc(isize * sizeof(struct int32_t_comp)); if (A == NULL) return; for (int i=0 ; i<isize ; ++i) { A[i].x = A_in[i]; A[i].i = iorder[i]; } qsort( (void*) A, (size_t) isize, sizeof(struct int32_t_comp), compare_int32_t); for (int i=0 ; i<isize ; ++i) { A_in[i] = A[i].x; iorder[i] = A[i].i; } free(A); } void qsort_int32_t_noidx(int32_t* A, int32_t isize) { qsort( (void*) A, (size_t) isize, sizeof(int32_t), compare_int32_t); } struct int32_t_comp_big { int32_t x; int64_t i; }; int compare_int32_t_big( const void * l, const void * r ) { const int32_t * restrict _l= l; const int32_t * restrict _r= r; if( *_l > *_r ) return 1; if( *_l < *_r ) return -1; return 0; } void qsort_int32_t_big(int32_t* restrict A_in, int64_t* restrict iorder, int64_t isize) { struct int32_t_comp_big* A = malloc(isize * sizeof(struct int32_t_comp_big)); if (A == NULL) return; for (int i=0 ; i<isize ; ++i) { A[i].x = A_in[i]; A[i].i = iorder[i]; } qsort( (void*) A, (size_t) isize, sizeof(struct int32_t_comp_big), compare_int32_t_big); for (int i=0 ; i<isize ; ++i) { A_in[i] = A[i].x; iorder[i] = A[i].i; } free(A); } void qsort_int32_t_noidx_big(int32_t* A, int64_t isize) { qsort( (void*) A, (size_t) isize, sizeof(int32_t), compare_int32_t_big); } struct int64_t_comp { int64_t x; int32_t i; }; int compare_int64_t( const void * l, const void * r ) { const int64_t * restrict _l= l; const int64_t * restrict _r= r; if( *_l > *_r ) return 1; if( *_l < *_r ) return -1; return 0; } void qsort_int64_t(int64_t* restrict A_in, int32_t* restrict iorder, int32_t isize) { struct int64_t_comp* A = malloc(isize * sizeof(struct int64_t_comp)); if (A == NULL) return; for (int i=0 ; i<isize ; ++i) { A[i].x = A_in[i]; A[i].i = iorder[i]; } qsort( (void*) A, (size_t) isize, sizeof(struct int64_t_comp), compare_int64_t); for (int i=0 ; i<isize ; ++i) { A_in[i] = A[i].x; iorder[i] = A[i].i; } free(A); } void qsort_int64_t_noidx(int64_t* A, int32_t isize) { qsort( (void*) A, (size_t) isize, sizeof(int64_t), compare_int64_t); } struct int64_t_comp_big { int64_t x; int64_t i; }; int compare_int64_t_big( const void * l, const void * r ) { const int64_t * restrict _l= l; const int64_t * restrict _r= r; if( *_l > *_r ) return 1; if( *_l < *_r ) return -1; return 0; } void qsort_int64_t_big(int64_t* restrict A_in, int64_t* restrict iorder, int64_t isize) { struct int64_t_comp_big* A = malloc(isize * sizeof(struct int64_t_comp_big)); if (A == NULL) return; for (int i=0 ; i<isize ; ++i) { A[i].x = A_in[i]; A[i].i = iorder[i]; } qsort( (void*) A, (size_t) isize, sizeof(struct int64_t_comp_big), compare_int64_t_big); for (int i=0 ; i<isize ; ++i) { A_in[i] = A[i].x; iorder[i] = A[i].i; } free(A); } void qsort_int64_t_noidx_big(int64_t* A, int64_t isize) { qsort( (void*) A, (size_t) isize, sizeof(int64_t), compare_int64_t_big); } struct double_comp { double x; int32_t i; }; int compare_double( const void * l, const void * r ) { const double * restrict _l= l; const double * restrict _r= r; if( *_l > *_r ) return 1; if( *_l < *_r ) return -1; return 0; } void qsort_double(double* restrict A_in, int32_t* restrict iorder, int32_t isize) { struct double_comp* A = malloc(isize * sizeof(struct double_comp)); if (A == NULL) return; for (int i=0 ; i<isize ; ++i) { A[i].x = A_in[i]; A[i].i = iorder[i]; } qsort( (void*) A, (size_t) isize, sizeof(struct double_comp), compare_double); for (int i=0 ; i<isize ; ++i) { A_in[i] = A[i].x; iorder[i] = A[i].i; } free(A); } void qsort_double_noidx(double* A, int32_t isize) { qsort( (void*) A, (size_t) isize, sizeof(double), compare_double); } struct double_comp_big { double x; int64_t i; }; int compare_double_big( const void * l, const void * r ) { const double * restrict _l= l; const double * restrict _r= r; if( *_l > *_r ) return 1; if( *_l < *_r ) return -1; return 0; } void qsort_double_big(double* restrict A_in, int64_t* restrict iorder, int64_t isize) { struct double_comp_big* A = malloc(isize * sizeof(struct double_comp_big)); if (A == NULL) return; for (int i=0 ; i<isize ; ++i) { A[i].x = A_in[i]; A[i].i = iorder[i]; } qsort( (void*) A, (size_t) isize, sizeof(struct double_comp_big), compare_double_big); for (int i=0 ; i<isize ; ++i) { A_in[i] = A[i].x; iorder[i] = A[i].i; } free(A); } void qsort_double_noidx_big(double* A, int64_t isize) { qsort( (void*) A, (size_t) isize, sizeof(double), compare_double_big); } struct float_comp { float x; int32_t i; }; int compare_float( const void * l, const void * r ) { const float * restrict _l= l; const float * restrict _r= r; if( *_l > *_r ) return 1; if( *_l < *_r ) return -1; return 0; } void qsort_float(float* restrict A_in, int32_t* restrict iorder, int32_t isize) { struct float_comp* A = malloc(isize * sizeof(struct float_comp)); if (A == NULL) return; for (int i=0 ; i<isize ; ++i) { A[i].x = A_in[i]; A[i].i = iorder[i]; } qsort( (void*) A, (size_t) isize, sizeof(struct float_comp), compare_float); for (int i=0 ; i<isize ; ++i) { A_in[i] = A[i].x; iorder[i] = A[i].i; } free(A); } void qsort_float_noidx(float* A, int32_t isize) { qsort( (void*) A, (size_t) isize, sizeof(float), compare_float); } struct float_comp_big { float x; int64_t i; }; int compare_float_big( const void * l, const void * r ) { const float * restrict _l= l; const float * restrict _r= r; if( *_l > *_r ) return 1; if( *_l < *_r ) return -1; return 0; } void qsort_float_big(float* restrict A_in, int64_t* restrict iorder, int64_t isize) { struct float_comp_big* A = malloc(isize * sizeof(struct float_comp_big)); if (A == NULL) return; for (int i=0 ; i<isize ; ++i) { A[i].x = A_in[i]; A[i].i = iorder[i]; } qsort( (void*) A, (size_t) isize, sizeof(struct float_comp_big), compare_float_big); for (int i=0 ; i<isize ; ++i) { A_in[i] = A[i].x; iorder[i] = A[i].i; } free(A); } void qsort_float_noidx_big(float* A, int64_t isize) { qsort( (void*) A, (size_t) isize, sizeof(float), compare_float_big); } /* Generated C file:1 ends here */