int inter_tore(t_cod *cor, t_tmp *tmp, t_obj *obc, t_sph *obj_a) { double d0; double d1; double d2; double p0; double p1; double p2; double R; double r; double tmp2[4]; modif_lX(cor, obj_a, tmp); init_d(tmp, &d0, &d1, &d2); init_R_r(obj_a, &R, &r); init_p(tmp, &p0, &p1, &p2); tmp2[0] = X2(d0) + X2(d1) + X2(d2); tmp2[1] = d0 * p0 + d1 * p1 + d2 * p2; tmp2[2] = X2(p0) + X2(p1) + X2(p2) + X2(R) - X2(r); tmp->l_v[0] = X2(tmp2[0]); tmp->l_v[1] = 4 * tmp2[0] * tmp2[1]; tmp->l_v[2] = 2 * tmp2[0] * tmp2[2] + (4. * X2(tmp2[1])) - (4. * X2(R) * (X2(d0) + X2(d1))); tmp->l_c[0] = 4 * tmp2[1] * tmp2[2] - (8. * X2(R) * ((d0 * p0) + (d1 * p1))); tmp->l_c[1] = X2(tmp2[2]) - (4. * X2(R) * (X2(p0) + X2(p1))); return (ferari(tmp, obc)); }
int main(int argc, char **argv) { ds d = init_d(); for(int i = 0; i < n; i++) insert_d(d, i, 0); delete_max_d(d, 1); delete_min_d(d, 1); for(int i = 0; i < x; i++) search_d(d, i, x); }
int main(void) { /* Local scalars */ char compz, compz_i; lapack_int n, n_i; lapack_int ldz, ldz_i; lapack_int ldz_r; lapack_int info, info_i; lapack_int i; int failed; /* Local arrays */ float *d = NULL, *d_i = NULL; float *e = NULL, *e_i = NULL; lapack_complex_float *z = NULL, *z_i = NULL; float *work = NULL, *work_i = NULL; float *d_save = NULL; float *e_save = NULL; lapack_complex_float *z_save = NULL; lapack_complex_float *z_r = NULL; /* Iniitialize the scalar parameters */ init_scalars_csteqr( &compz, &n, &ldz ); ldz_r = n+2; compz_i = compz; n_i = n; ldz_i = ldz; /* Allocate memory for the LAPACK routine arrays */ d = (float *)LAPACKE_malloc( n * sizeof(float) ); e = (float *)LAPACKE_malloc( (n-1) * sizeof(float) ); z = (lapack_complex_float *) LAPACKE_malloc( ldz*n * sizeof(lapack_complex_float) ); work = (float *)LAPACKE_malloc( ((MAX(1,2*n-2))) * sizeof(float) ); /* Allocate memory for the C interface function arrays */ d_i = (float *)LAPACKE_malloc( n * sizeof(float) ); e_i = (float *)LAPACKE_malloc( (n-1) * sizeof(float) ); z_i = (lapack_complex_float *) LAPACKE_malloc( ldz*n * sizeof(lapack_complex_float) ); work_i = (float *)LAPACKE_malloc( ((MAX(1,2*n-2))) * sizeof(float) ); /* Allocate memory for the backup arrays */ d_save = (float *)LAPACKE_malloc( n * sizeof(float) ); e_save = (float *)LAPACKE_malloc( (n-1) * sizeof(float) ); z_save = (lapack_complex_float *) LAPACKE_malloc( ldz*n * sizeof(lapack_complex_float) ); /* Allocate memory for the row-major arrays */ z_r = (lapack_complex_float *) LAPACKE_malloc( n*(n+2) * sizeof(lapack_complex_float) ); /* Initialize input arrays */ init_d( n, d ); init_e( (n-1), e ); init_z( ldz*n, z ); init_work( (MAX(1,2*n-2)), work ); /* Backup the ouptut arrays */ for( i = 0; i < n; i++ ) { d_save[i] = d[i]; } for( i = 0; i < (n-1); i++ ) { e_save[i] = e[i]; } for( i = 0; i < ldz*n; i++ ) { z_save[i] = z[i]; } /* Call the LAPACK routine */ csteqr_( &compz, &n, d, e, z, &ldz, work, &info ); /* Initialize input data, call the column-major middle-level * interface to LAPACK routine and check the results */ for( i = 0; i < n; i++ ) { d_i[i] = d_save[i]; } for( i = 0; i < (n-1); i++ ) { e_i[i] = e_save[i]; } for( i = 0; i < ldz*n; i++ ) { z_i[i] = z_save[i]; } for( i = 0; i < (MAX(1,2*n-2)); i++ ) { work_i[i] = work[i]; } info_i = LAPACKE_csteqr_work( LAPACK_COL_MAJOR, compz_i, n_i, d_i, e_i, z_i, ldz_i, work_i ); failed = compare_csteqr( d, d_i, e, e_i, z, z_i, info, info_i, compz, ldz, n ); if( failed == 0 ) { printf( "PASSED: column-major middle-level interface to csteqr\n" ); } else { printf( "FAILED: column-major middle-level interface to csteqr\n" ); } /* Initialize input data, call the column-major high-level * interface to LAPACK routine and check the results */ for( i = 0; i < n; i++ ) { d_i[i] = d_save[i]; } for( i = 0; i < (n-1); i++ ) { e_i[i] = e_save[i]; } for( i = 0; i < ldz*n; i++ ) { z_i[i] = z_save[i]; } for( i = 0; i < (MAX(1,2*n-2)); i++ ) { work_i[i] = work[i]; } info_i = LAPACKE_csteqr( LAPACK_COL_MAJOR, compz_i, n_i, d_i, e_i, z_i, ldz_i ); failed = compare_csteqr( d, d_i, e, e_i, z, z_i, info, info_i, compz, ldz, n ); if( failed == 0 ) { printf( "PASSED: column-major high-level interface to csteqr\n" ); } else { printf( "FAILED: column-major high-level interface to csteqr\n" ); } /* Initialize input data, call the row-major middle-level * interface to LAPACK routine and check the results */ for( i = 0; i < n; i++ ) { d_i[i] = d_save[i]; } for( i = 0; i < (n-1); i++ ) { e_i[i] = e_save[i]; } for( i = 0; i < ldz*n; i++ ) { z_i[i] = z_save[i]; } for( i = 0; i < (MAX(1,2*n-2)); i++ ) { work_i[i] = work[i]; } if( LAPACKE_lsame( compz, 'i' ) || LAPACKE_lsame( compz, 'v' ) ) { LAPACKE_cge_trans( LAPACK_COL_MAJOR, n, n, z_i, ldz, z_r, n+2 ); } info_i = LAPACKE_csteqr_work( LAPACK_ROW_MAJOR, compz_i, n_i, d_i, e_i, z_r, ldz_r, work_i ); if( LAPACKE_lsame( compz, 'i' ) || LAPACKE_lsame( compz, 'v' ) ) { LAPACKE_cge_trans( LAPACK_ROW_MAJOR, n, n, z_r, n+2, z_i, ldz ); } failed = compare_csteqr( d, d_i, e, e_i, z, z_i, info, info_i, compz, ldz, n ); if( failed == 0 ) { printf( "PASSED: row-major middle-level interface to csteqr\n" ); } else { printf( "FAILED: row-major middle-level interface to csteqr\n" ); } /* Initialize input data, call the row-major high-level * interface to LAPACK routine and check the results */ for( i = 0; i < n; i++ ) { d_i[i] = d_save[i]; } for( i = 0; i < (n-1); i++ ) { e_i[i] = e_save[i]; } for( i = 0; i < ldz*n; i++ ) { z_i[i] = z_save[i]; } for( i = 0; i < (MAX(1,2*n-2)); i++ ) { work_i[i] = work[i]; } /* Init row_major arrays */ if( LAPACKE_lsame( compz, 'i' ) || LAPACKE_lsame( compz, 'v' ) ) { LAPACKE_cge_trans( LAPACK_COL_MAJOR, n, n, z_i, ldz, z_r, n+2 ); } info_i = LAPACKE_csteqr( LAPACK_ROW_MAJOR, compz_i, n_i, d_i, e_i, z_r, ldz_r ); if( LAPACKE_lsame( compz, 'i' ) || LAPACKE_lsame( compz, 'v' ) ) { LAPACKE_cge_trans( LAPACK_ROW_MAJOR, n, n, z_r, n+2, z_i, ldz ); } failed = compare_csteqr( d, d_i, e, e_i, z, z_i, info, info_i, compz, ldz, n ); if( failed == 0 ) { printf( "PASSED: row-major high-level interface to csteqr\n" ); } else { printf( "FAILED: row-major high-level interface to csteqr\n" ); } /* Release memory */ if( d != NULL ) { LAPACKE_free( d ); } if( d_i != NULL ) { LAPACKE_free( d_i ); } if( d_save != NULL ) { LAPACKE_free( d_save ); } if( e != NULL ) { LAPACKE_free( e ); } if( e_i != NULL ) { LAPACKE_free( e_i ); } if( e_save != NULL ) { LAPACKE_free( e_save ); } if( z != NULL ) { LAPACKE_free( z ); } if( z_i != NULL ) { LAPACKE_free( z_i ); } if( z_r != NULL ) { LAPACKE_free( z_r ); } if( z_save != NULL ) { LAPACKE_free( z_save ); } if( work != NULL ) { LAPACKE_free( work ); } if( work_i != NULL ) { LAPACKE_free( work_i ); } return 0; }
int main(void) { /* Local scalars */ lapack_int m, m_i; lapack_int n, n_i; lapack_int lda, lda_i; lapack_int lda_r; lapack_int lwork, lwork_i; lapack_int info, info_i; lapack_int i; int failed; /* Local arrays */ float *a = NULL, *a_i = NULL; float *d = NULL, *d_i = NULL; float *e = NULL, *e_i = NULL; float *tauq = NULL, *tauq_i = NULL; float *taup = NULL, *taup_i = NULL; float *work = NULL, *work_i = NULL; float *a_save = NULL; float *d_save = NULL; float *e_save = NULL; float *tauq_save = NULL; float *taup_save = NULL; float *a_r = NULL; /* Iniitialize the scalar parameters */ init_scalars_sgebrd( &m, &n, &lda, &lwork ); lda_r = n+2; m_i = m; n_i = n; lda_i = lda; lwork_i = lwork; /* Allocate memory for the LAPACK routine arrays */ a = (float *)LAPACKE_malloc( lda*n * sizeof(float) ); d = (float *)LAPACKE_malloc( MIN(m,n) * sizeof(float) ); e = (float *)LAPACKE_malloc( ((MIN(m,n)-1)) * sizeof(float) ); tauq = (float *)LAPACKE_malloc( MIN(m,n) * sizeof(float) ); taup = (float *)LAPACKE_malloc( MIN(m,n) * sizeof(float) ); work = (float *)LAPACKE_malloc( lwork * sizeof(float) ); /* Allocate memory for the C interface function arrays */ a_i = (float *)LAPACKE_malloc( lda*n * sizeof(float) ); d_i = (float *)LAPACKE_malloc( MIN(m,n) * sizeof(float) ); e_i = (float *)LAPACKE_malloc( ((MIN(m,n)-1)) * sizeof(float) ); tauq_i = (float *)LAPACKE_malloc( MIN(m,n) * sizeof(float) ); taup_i = (float *)LAPACKE_malloc( MIN(m,n) * sizeof(float) ); work_i = (float *)LAPACKE_malloc( lwork * sizeof(float) ); /* Allocate memory for the backup arrays */ a_save = (float *)LAPACKE_malloc( lda*n * sizeof(float) ); d_save = (float *)LAPACKE_malloc( MIN(m,n) * sizeof(float) ); e_save = (float *)LAPACKE_malloc( ((MIN(m,n)-1)) * sizeof(float) ); tauq_save = (float *)LAPACKE_malloc( MIN(m,n) * sizeof(float) ); taup_save = (float *)LAPACKE_malloc( MIN(m,n) * sizeof(float) ); /* Allocate memory for the row-major arrays */ a_r = (float *)LAPACKE_malloc( m*(n+2) * sizeof(float) ); /* Initialize input arrays */ init_a( lda*n, a ); init_d( (MIN(m,n)), d ); init_e( (MIN(m,n)-1), e ); init_tauq( (MIN(m,n)), tauq ); init_taup( (MIN(m,n)), taup ); init_work( lwork, work ); /* Backup the ouptut arrays */ for( i = 0; i < lda*n; i++ ) { a_save[i] = a[i]; } for( i = 0; i < (MIN(m,n)); i++ ) { d_save[i] = d[i]; } for( i = 0; i < (MIN(m,n)-1); i++ ) { e_save[i] = e[i]; } for( i = 0; i < (MIN(m,n)); i++ ) { tauq_save[i] = tauq[i]; } for( i = 0; i < (MIN(m,n)); i++ ) { taup_save[i] = taup[i]; } /* Call the LAPACK routine */ sgebrd_( &m, &n, a, &lda, d, e, tauq, taup, work, &lwork, &info ); /* Initialize input data, call the column-major middle-level * interface to LAPACK routine and check the results */ for( i = 0; i < lda*n; i++ ) { a_i[i] = a_save[i]; } for( i = 0; i < (MIN(m,n)); i++ ) { d_i[i] = d_save[i]; } for( i = 0; i < (MIN(m,n)-1); i++ ) { e_i[i] = e_save[i]; } for( i = 0; i < (MIN(m,n)); i++ ) { tauq_i[i] = tauq_save[i]; } for( i = 0; i < (MIN(m,n)); i++ ) { taup_i[i] = taup_save[i]; } for( i = 0; i < lwork; i++ ) { work_i[i] = work[i]; } info_i = LAPACKE_sgebrd_work( LAPACK_COL_MAJOR, m_i, n_i, a_i, lda_i, d_i, e_i, tauq_i, taup_i, work_i, lwork_i ); failed = compare_sgebrd( a, a_i, d, d_i, e, e_i, tauq, tauq_i, taup, taup_i, info, info_i, lda, m, n ); if( failed == 0 ) { printf( "PASSED: column-major middle-level interface to sgebrd\n" ); } else { printf( "FAILED: column-major middle-level interface to sgebrd\n" ); } /* Initialize input data, call the column-major high-level * interface to LAPACK routine and check the results */ for( i = 0; i < lda*n; i++ ) { a_i[i] = a_save[i]; } for( i = 0; i < (MIN(m,n)); i++ ) { d_i[i] = d_save[i]; } for( i = 0; i < (MIN(m,n)-1); i++ ) { e_i[i] = e_save[i]; } for( i = 0; i < (MIN(m,n)); i++ ) { tauq_i[i] = tauq_save[i]; } for( i = 0; i < (MIN(m,n)); i++ ) { taup_i[i] = taup_save[i]; } for( i = 0; i < lwork; i++ ) { work_i[i] = work[i]; } info_i = LAPACKE_sgebrd( LAPACK_COL_MAJOR, m_i, n_i, a_i, lda_i, d_i, e_i, tauq_i, taup_i ); failed = compare_sgebrd( a, a_i, d, d_i, e, e_i, tauq, tauq_i, taup, taup_i, info, info_i, lda, m, n ); if( failed == 0 ) { printf( "PASSED: column-major high-level interface to sgebrd\n" ); } else { printf( "FAILED: column-major high-level interface to sgebrd\n" ); } /* Initialize input data, call the row-major middle-level * interface to LAPACK routine and check the results */ for( i = 0; i < lda*n; i++ ) { a_i[i] = a_save[i]; } for( i = 0; i < (MIN(m,n)); i++ ) { d_i[i] = d_save[i]; } for( i = 0; i < (MIN(m,n)-1); i++ ) { e_i[i] = e_save[i]; } for( i = 0; i < (MIN(m,n)); i++ ) { tauq_i[i] = tauq_save[i]; } for( i = 0; i < (MIN(m,n)); i++ ) { taup_i[i] = taup_save[i]; } for( i = 0; i < lwork; i++ ) { work_i[i] = work[i]; } LAPACKE_sge_trans( LAPACK_COL_MAJOR, m, n, a_i, lda, a_r, n+2 ); info_i = LAPACKE_sgebrd_work( LAPACK_ROW_MAJOR, m_i, n_i, a_r, lda_r, d_i, e_i, tauq_i, taup_i, work_i, lwork_i ); LAPACKE_sge_trans( LAPACK_ROW_MAJOR, m, n, a_r, n+2, a_i, lda ); failed = compare_sgebrd( a, a_i, d, d_i, e, e_i, tauq, tauq_i, taup, taup_i, info, info_i, lda, m, n ); if( failed == 0 ) { printf( "PASSED: row-major middle-level interface to sgebrd\n" ); } else { printf( "FAILED: row-major middle-level interface to sgebrd\n" ); } /* Initialize input data, call the row-major high-level * interface to LAPACK routine and check the results */ for( i = 0; i < lda*n; i++ ) { a_i[i] = a_save[i]; } for( i = 0; i < (MIN(m,n)); i++ ) { d_i[i] = d_save[i]; } for( i = 0; i < (MIN(m,n)-1); i++ ) { e_i[i] = e_save[i]; } for( i = 0; i < (MIN(m,n)); i++ ) { tauq_i[i] = tauq_save[i]; } for( i = 0; i < (MIN(m,n)); i++ ) { taup_i[i] = taup_save[i]; } for( i = 0; i < lwork; i++ ) { work_i[i] = work[i]; } /* Init row_major arrays */ LAPACKE_sge_trans( LAPACK_COL_MAJOR, m, n, a_i, lda, a_r, n+2 ); info_i = LAPACKE_sgebrd( LAPACK_ROW_MAJOR, m_i, n_i, a_r, lda_r, d_i, e_i, tauq_i, taup_i ); LAPACKE_sge_trans( LAPACK_ROW_MAJOR, m, n, a_r, n+2, a_i, lda ); failed = compare_sgebrd( a, a_i, d, d_i, e, e_i, tauq, tauq_i, taup, taup_i, info, info_i, lda, m, n ); if( failed == 0 ) { printf( "PASSED: row-major high-level interface to sgebrd\n" ); } else { printf( "FAILED: row-major high-level interface to sgebrd\n" ); } /* Release memory */ if( a != NULL ) { LAPACKE_free( a ); } if( a_i != NULL ) { LAPACKE_free( a_i ); } if( a_r != NULL ) { LAPACKE_free( a_r ); } if( a_save != NULL ) { LAPACKE_free( a_save ); } if( d != NULL ) { LAPACKE_free( d ); } if( d_i != NULL ) { LAPACKE_free( d_i ); } if( d_save != NULL ) { LAPACKE_free( d_save ); } if( e != NULL ) { LAPACKE_free( e ); } if( e_i != NULL ) { LAPACKE_free( e_i ); } if( e_save != NULL ) { LAPACKE_free( e_save ); } if( tauq != NULL ) { LAPACKE_free( tauq ); } if( tauq_i != NULL ) { LAPACKE_free( tauq_i ); } if( tauq_save != NULL ) { LAPACKE_free( tauq_save ); } if( taup != NULL ) { LAPACKE_free( taup ); } if( taup_i != NULL ) { LAPACKE_free( taup_i ); } if( taup_save != NULL ) { LAPACKE_free( taup_save ); } if( work != NULL ) { LAPACKE_free( work ); } if( work_i != NULL ) { LAPACKE_free( work_i ); } return 0; }
int main(void) { /* Local scalars */ char vect, vect_i; char uplo, uplo_i; lapack_int n, n_i; lapack_int kd, kd_i; lapack_int ldab, ldab_i; lapack_int ldab_r; lapack_int ldq, ldq_i; lapack_int ldq_r; lapack_int info, info_i; lapack_int i; int failed; /* Local arrays */ double *ab = NULL, *ab_i = NULL; double *d = NULL, *d_i = NULL; double *e = NULL, *e_i = NULL; double *q = NULL, *q_i = NULL; double *work = NULL, *work_i = NULL; double *ab_save = NULL; double *d_save = NULL; double *e_save = NULL; double *q_save = NULL; double *ab_r = NULL; double *q_r = NULL; /* Iniitialize the scalar parameters */ init_scalars_dsbtrd( &vect, &uplo, &n, &kd, &ldab, &ldq ); ldab_r = n+2; ldq_r = n+2; vect_i = vect; uplo_i = uplo; n_i = n; kd_i = kd; ldab_i = ldab; ldq_i = ldq; /* Allocate memory for the LAPACK routine arrays */ ab = (double *)LAPACKE_malloc( ldab*n * sizeof(double) ); d = (double *)LAPACKE_malloc( n * sizeof(double) ); e = (double *)LAPACKE_malloc( (n-1) * sizeof(double) ); q = (double *)LAPACKE_malloc( ldq*n * sizeof(double) ); work = (double *)LAPACKE_malloc( n * sizeof(double) ); /* Allocate memory for the C interface function arrays */ ab_i = (double *)LAPACKE_malloc( ldab*n * sizeof(double) ); d_i = (double *)LAPACKE_malloc( n * sizeof(double) ); e_i = (double *)LAPACKE_malloc( (n-1) * sizeof(double) ); q_i = (double *)LAPACKE_malloc( ldq*n * sizeof(double) ); work_i = (double *)LAPACKE_malloc( n * sizeof(double) ); /* Allocate memory for the backup arrays */ ab_save = (double *)LAPACKE_malloc( ldab*n * sizeof(double) ); d_save = (double *)LAPACKE_malloc( n * sizeof(double) ); e_save = (double *)LAPACKE_malloc( (n-1) * sizeof(double) ); q_save = (double *)LAPACKE_malloc( ldq*n * sizeof(double) ); /* Allocate memory for the row-major arrays */ ab_r = (double *)LAPACKE_malloc( (kd+1)*(n+2) * sizeof(double) ); q_r = (double *)LAPACKE_malloc( n*(n+2) * sizeof(double) ); /* Initialize input arrays */ init_ab( ldab*n, ab ); init_d( n, d ); init_e( (n-1), e ); init_q( ldq*n, q ); init_work( n, work ); /* Backup the ouptut arrays */ for( i = 0; i < ldab*n; i++ ) { ab_save[i] = ab[i]; } for( i = 0; i < n; i++ ) { d_save[i] = d[i]; } for( i = 0; i < (n-1); i++ ) { e_save[i] = e[i]; } for( i = 0; i < ldq*n; i++ ) { q_save[i] = q[i]; } /* Call the LAPACK routine */ dsbtrd_( &vect, &uplo, &n, &kd, ab, &ldab, d, e, q, &ldq, work, &info ); /* Initialize input data, call the column-major middle-level * interface to LAPACK routine and check the results */ for( i = 0; i < ldab*n; i++ ) { ab_i[i] = ab_save[i]; } for( i = 0; i < n; i++ ) { d_i[i] = d_save[i]; } for( i = 0; i < (n-1); i++ ) { e_i[i] = e_save[i]; } for( i = 0; i < ldq*n; i++ ) { q_i[i] = q_save[i]; } for( i = 0; i < n; i++ ) { work_i[i] = work[i]; } info_i = LAPACKE_dsbtrd_work( LAPACK_COL_MAJOR, vect_i, uplo_i, n_i, kd_i, ab_i, ldab_i, d_i, e_i, q_i, ldq_i, work_i ); failed = compare_dsbtrd( ab, ab_i, d, d_i, e, e_i, q, q_i, info, info_i, ldab, ldq, n, vect ); if( failed == 0 ) { printf( "PASSED: column-major middle-level interface to dsbtrd\n" ); } else { printf( "FAILED: column-major middle-level interface to dsbtrd\n" ); } /* Initialize input data, call the column-major high-level * interface to LAPACK routine and check the results */ for( i = 0; i < ldab*n; i++ ) { ab_i[i] = ab_save[i]; } for( i = 0; i < n; i++ ) { d_i[i] = d_save[i]; } for( i = 0; i < (n-1); i++ ) { e_i[i] = e_save[i]; } for( i = 0; i < ldq*n; i++ ) { q_i[i] = q_save[i]; } for( i = 0; i < n; i++ ) { work_i[i] = work[i]; } info_i = LAPACKE_dsbtrd( LAPACK_COL_MAJOR, vect_i, uplo_i, n_i, kd_i, ab_i, ldab_i, d_i, e_i, q_i, ldq_i ); failed = compare_dsbtrd( ab, ab_i, d, d_i, e, e_i, q, q_i, info, info_i, ldab, ldq, n, vect ); if( failed == 0 ) { printf( "PASSED: column-major high-level interface to dsbtrd\n" ); } else { printf( "FAILED: column-major high-level interface to dsbtrd\n" ); } /* Initialize input data, call the row-major middle-level * interface to LAPACK routine and check the results */ for( i = 0; i < ldab*n; i++ ) { ab_i[i] = ab_save[i]; } for( i = 0; i < n; i++ ) { d_i[i] = d_save[i]; } for( i = 0; i < (n-1); i++ ) { e_i[i] = e_save[i]; } for( i = 0; i < ldq*n; i++ ) { q_i[i] = q_save[i]; } for( i = 0; i < n; i++ ) { work_i[i] = work[i]; } LAPACKE_dge_trans( LAPACK_COL_MAJOR, kd+1, n, ab_i, ldab, ab_r, n+2 ); if( LAPACKE_lsame( vect, 'u' ) || LAPACKE_lsame( vect, 'v' ) ) { LAPACKE_dge_trans( LAPACK_COL_MAJOR, n, n, q_i, ldq, q_r, n+2 ); } info_i = LAPACKE_dsbtrd_work( LAPACK_ROW_MAJOR, vect_i, uplo_i, n_i, kd_i, ab_r, ldab_r, d_i, e_i, q_r, ldq_r, work_i ); LAPACKE_dge_trans( LAPACK_ROW_MAJOR, kd+1, n, ab_r, n+2, ab_i, ldab ); if( LAPACKE_lsame( vect, 'u' ) || LAPACKE_lsame( vect, 'v' ) ) { LAPACKE_dge_trans( LAPACK_ROW_MAJOR, n, n, q_r, n+2, q_i, ldq ); } failed = compare_dsbtrd( ab, ab_i, d, d_i, e, e_i, q, q_i, info, info_i, ldab, ldq, n, vect ); if( failed == 0 ) { printf( "PASSED: row-major middle-level interface to dsbtrd\n" ); } else { printf( "FAILED: row-major middle-level interface to dsbtrd\n" ); } /* Initialize input data, call the row-major high-level * interface to LAPACK routine and check the results */ for( i = 0; i < ldab*n; i++ ) { ab_i[i] = ab_save[i]; } for( i = 0; i < n; i++ ) { d_i[i] = d_save[i]; } for( i = 0; i < (n-1); i++ ) { e_i[i] = e_save[i]; } for( i = 0; i < ldq*n; i++ ) { q_i[i] = q_save[i]; } for( i = 0; i < n; i++ ) { work_i[i] = work[i]; } /* Init row_major arrays */ LAPACKE_dge_trans( LAPACK_COL_MAJOR, kd+1, n, ab_i, ldab, ab_r, n+2 ); if( LAPACKE_lsame( vect, 'u' ) || LAPACKE_lsame( vect, 'v' ) ) { LAPACKE_dge_trans( LAPACK_COL_MAJOR, n, n, q_i, ldq, q_r, n+2 ); } info_i = LAPACKE_dsbtrd( LAPACK_ROW_MAJOR, vect_i, uplo_i, n_i, kd_i, ab_r, ldab_r, d_i, e_i, q_r, ldq_r ); LAPACKE_dge_trans( LAPACK_ROW_MAJOR, kd+1, n, ab_r, n+2, ab_i, ldab ); if( LAPACKE_lsame( vect, 'u' ) || LAPACKE_lsame( vect, 'v' ) ) { LAPACKE_dge_trans( LAPACK_ROW_MAJOR, n, n, q_r, n+2, q_i, ldq ); } failed = compare_dsbtrd( ab, ab_i, d, d_i, e, e_i, q, q_i, info, info_i, ldab, ldq, n, vect ); if( failed == 0 ) { printf( "PASSED: row-major high-level interface to dsbtrd\n" ); } else { printf( "FAILED: row-major high-level interface to dsbtrd\n" ); } /* Release memory */ if( ab != NULL ) { LAPACKE_free( ab ); } if( ab_i != NULL ) { LAPACKE_free( ab_i ); } if( ab_r != NULL ) { LAPACKE_free( ab_r ); } if( ab_save != NULL ) { LAPACKE_free( ab_save ); } if( d != NULL ) { LAPACKE_free( d ); } if( d_i != NULL ) { LAPACKE_free( d_i ); } if( d_save != NULL ) { LAPACKE_free( d_save ); } if( e != NULL ) { LAPACKE_free( e ); } if( e_i != NULL ) { LAPACKE_free( e_i ); } if( e_save != NULL ) { LAPACKE_free( e_save ); } if( q != NULL ) { LAPACKE_free( q ); } if( q_i != NULL ) { LAPACKE_free( q_i ); } if( q_r != NULL ) { LAPACKE_free( q_r ); } if( q_save != NULL ) { LAPACKE_free( q_save ); } if( work != NULL ) { LAPACKE_free( work ); } if( work_i != NULL ) { LAPACKE_free( work_i ); } return 0; }
int main(void) { /* Local scalars */ char range, range_i; char order, order_i; lapack_int n, n_i; double vl, vl_i; double vu, vu_i; lapack_int il, il_i; lapack_int iu, iu_i; double abstol, abstol_i; lapack_int m, m_i; lapack_int nsplit, nsplit_i; lapack_int info, info_i; lapack_int i; int failed; /* Local arrays */ double *d = NULL, *d_i = NULL; double *e = NULL, *e_i = NULL; double *w = NULL, *w_i = NULL; lapack_int *iblock = NULL, *iblock_i = NULL; lapack_int *isplit = NULL, *isplit_i = NULL; double *work = NULL, *work_i = NULL; lapack_int *iwork = NULL, *iwork_i = NULL; double *w_save = NULL; lapack_int *iblock_save = NULL; lapack_int *isplit_save = NULL; /* Iniitialize the scalar parameters */ init_scalars_dstebz( &range, &order, &n, &vl, &vu, &il, &iu, &abstol ); range_i = range; order_i = order; n_i = n; vl_i = vl; vu_i = vu; il_i = il; iu_i = iu; abstol_i = abstol; /* Allocate memory for the LAPACK routine arrays */ d = (double *)LAPACKE_malloc( n * sizeof(double) ); e = (double *)LAPACKE_malloc( (n-1) * sizeof(double) ); w = (double *)LAPACKE_malloc( n * sizeof(double) ); iblock = (lapack_int *)LAPACKE_malloc( n * sizeof(lapack_int) ); isplit = (lapack_int *)LAPACKE_malloc( n * sizeof(lapack_int) ); work = (double *)LAPACKE_malloc( 4*n * sizeof(double) ); iwork = (lapack_int *)LAPACKE_malloc( 3*n * sizeof(lapack_int) ); /* Allocate memory for the C interface function arrays */ d_i = (double *)LAPACKE_malloc( n * sizeof(double) ); e_i = (double *)LAPACKE_malloc( (n-1) * sizeof(double) ); w_i = (double *)LAPACKE_malloc( n * sizeof(double) ); iblock_i = (lapack_int *)LAPACKE_malloc( n * sizeof(lapack_int) ); isplit_i = (lapack_int *)LAPACKE_malloc( n * sizeof(lapack_int) ); work_i = (double *)LAPACKE_malloc( 4*n * sizeof(double) ); iwork_i = (lapack_int *)LAPACKE_malloc( 3*n * sizeof(lapack_int) ); /* Allocate memory for the backup arrays */ w_save = (double *)LAPACKE_malloc( n * sizeof(double) ); iblock_save = (lapack_int *)LAPACKE_malloc( n * sizeof(lapack_int) ); isplit_save = (lapack_int *)LAPACKE_malloc( n * sizeof(lapack_int) ); /* Allocate memory for the row-major arrays */ /* Initialize input arrays */ init_d( n, d ); init_e( (n-1), e ); init_w( n, w ); init_iblock( n, iblock ); init_isplit( n, isplit ); init_work( 4*n, work ); init_iwork( 3*n, iwork ); /* Backup the ouptut arrays */ for( i = 0; i < n; i++ ) { w_save[i] = w[i]; } for( i = 0; i < n; i++ ) { iblock_save[i] = iblock[i]; } for( i = 0; i < n; i++ ) { isplit_save[i] = isplit[i]; } /* Call the LAPACK routine */ dstebz_( &range, &order, &n, &vl, &vu, &il, &iu, &abstol, d, e, &m, &nsplit, w, iblock, isplit, work, iwork, &info ); /* Initialize input data, call the column-major middle-level * interface to LAPACK routine and check the results */ for( i = 0; i < n; i++ ) { d_i[i] = d[i]; } for( i = 0; i < (n-1); i++ ) { e_i[i] = e[i]; } for( i = 0; i < n; i++ ) { w_i[i] = w_save[i]; } for( i = 0; i < n; i++ ) { iblock_i[i] = iblock_save[i]; } for( i = 0; i < n; i++ ) { isplit_i[i] = isplit_save[i]; } for( i = 0; i < 4*n; i++ ) { work_i[i] = work[i]; } for( i = 0; i < 3*n; i++ ) { iwork_i[i] = iwork[i]; } info_i = LAPACKE_dstebz_work( range_i, order_i, n_i, vl_i, vu_i, il_i, iu_i, abstol_i, d_i, e_i, &m_i, &nsplit_i, w_i, iblock_i, isplit_i, work_i, iwork_i ); failed = compare_dstebz( m, m_i, nsplit, nsplit_i, w, w_i, iblock, iblock_i, isplit, isplit_i, info, info_i, n ); if( failed == 0 ) { printf( "PASSED: column-major middle-level interface to dstebz\n" ); } else { printf( "FAILED: column-major middle-level interface to dstebz\n" ); } /* Initialize input data, call the column-major high-level * interface to LAPACK routine and check the results */ for( i = 0; i < n; i++ ) { d_i[i] = d[i]; } for( i = 0; i < (n-1); i++ ) { e_i[i] = e[i]; } for( i = 0; i < n; i++ ) { w_i[i] = w_save[i]; } for( i = 0; i < n; i++ ) { iblock_i[i] = iblock_save[i]; } for( i = 0; i < n; i++ ) { isplit_i[i] = isplit_save[i]; } for( i = 0; i < 4*n; i++ ) { work_i[i] = work[i]; } for( i = 0; i < 3*n; i++ ) { iwork_i[i] = iwork[i]; } info_i = LAPACKE_dstebz( range_i, order_i, n_i, vl_i, vu_i, il_i, iu_i, abstol_i, d_i, e_i, &m_i, &nsplit_i, w_i, iblock_i, isplit_i ); failed = compare_dstebz( m, m_i, nsplit, nsplit_i, w, w_i, iblock, iblock_i, isplit, isplit_i, info, info_i, n ); if( failed == 0 ) { printf( "PASSED: column-major high-level interface to dstebz\n" ); } else { printf( "FAILED: column-major high-level interface to dstebz\n" ); } failed = compare_dstebz( m, m_i, nsplit, nsplit_i, w, w_i, iblock, iblock_i, isplit, isplit_i, info, info_i, n ); if( failed == 0 ) { printf( "PASSED: row-major middle-level interface to dstebz\n" ); } else { printf( "FAILED: row-major middle-level interface to dstebz\n" ); } failed = compare_dstebz( m, m_i, nsplit, nsplit_i, w, w_i, iblock, iblock_i, isplit, isplit_i, info, info_i, n ); if( failed == 0 ) { printf( "PASSED: row-major high-level interface to dstebz\n" ); } else { printf( "FAILED: row-major high-level interface to dstebz\n" ); } /* Release memory */ if( d != NULL ) { LAPACKE_free( d ); } if( d_i != NULL ) { LAPACKE_free( d_i ); } if( e != NULL ) { LAPACKE_free( e ); } if( e_i != NULL ) { LAPACKE_free( e_i ); } if( w != NULL ) { LAPACKE_free( w ); } if( w_i != NULL ) { LAPACKE_free( w_i ); } if( w_save != NULL ) { LAPACKE_free( w_save ); } if( iblock != NULL ) { LAPACKE_free( iblock ); } if( iblock_i != NULL ) { LAPACKE_free( iblock_i ); } if( iblock_save != NULL ) { LAPACKE_free( iblock_save ); } if( isplit != NULL ) { LAPACKE_free( isplit ); } if( isplit_i != NULL ) { LAPACKE_free( isplit_i ); } if( isplit_save != NULL ) { LAPACKE_free( isplit_save ); } if( work != NULL ) { LAPACKE_free( work ); } if( work_i != NULL ) { LAPACKE_free( work_i ); } if( iwork != NULL ) { LAPACKE_free( iwork ); } if( iwork_i != NULL ) { LAPACKE_free( iwork_i ); } return 0; }
int main(void) { /* Local scalars */ char uplo, uplo_i; lapack_int n, n_i; lapack_int ncvt, ncvt_i; lapack_int nru, nru_i; lapack_int ncc, ncc_i; lapack_int ldvt, ldvt_i; lapack_int ldvt_r; lapack_int ldu, ldu_i; lapack_int ldu_r; lapack_int ldc, ldc_i; lapack_int ldc_r; lapack_int info, info_i; lapack_int i; int failed; /* Local arrays */ float *d = NULL, *d_i = NULL; float *e = NULL, *e_i = NULL; lapack_complex_float *vt = NULL, *vt_i = NULL; lapack_complex_float *u = NULL, *u_i = NULL; lapack_complex_float *c = NULL, *c_i = NULL; float *work = NULL, *work_i = NULL; float *d_save = NULL; float *e_save = NULL; lapack_complex_float *vt_save = NULL; lapack_complex_float *u_save = NULL; lapack_complex_float *c_save = NULL; lapack_complex_float *vt_r = NULL; lapack_complex_float *u_r = NULL; lapack_complex_float *c_r = NULL; /* Iniitialize the scalar parameters */ init_scalars_cbdsqr( &uplo, &n, &ncvt, &nru, &ncc, &ldvt, &ldu, &ldc ); ldvt_r = ncvt+2; ldu_r = n+2; ldc_r = ncc+2; uplo_i = uplo; n_i = n; ncvt_i = ncvt; nru_i = nru; ncc_i = ncc; ldvt_i = ldvt; ldu_i = ldu; ldc_i = ldc; /* Allocate memory for the LAPACK routine arrays */ d = (float *)LAPACKE_malloc( n * sizeof(float) ); e = (float *)LAPACKE_malloc( n * sizeof(float) ); vt = (lapack_complex_float *) LAPACKE_malloc( ldvt*ncvt * sizeof(lapack_complex_float) ); u = (lapack_complex_float *) LAPACKE_malloc( ldu*n * sizeof(lapack_complex_float) ); c = (lapack_complex_float *) LAPACKE_malloc( ldc*ncc * sizeof(lapack_complex_float) ); work = (float *)LAPACKE_malloc( 4*n * sizeof(float) ); /* Allocate memory for the C interface function arrays */ d_i = (float *)LAPACKE_malloc( n * sizeof(float) ); e_i = (float *)LAPACKE_malloc( n * sizeof(float) ); vt_i = (lapack_complex_float *) LAPACKE_malloc( ldvt*ncvt * sizeof(lapack_complex_float) ); u_i = (lapack_complex_float *) LAPACKE_malloc( ldu*n * sizeof(lapack_complex_float) ); c_i = (lapack_complex_float *) LAPACKE_malloc( ldc*ncc * sizeof(lapack_complex_float) ); work_i = (float *)LAPACKE_malloc( 4*n * sizeof(float) ); /* Allocate memory for the backup arrays */ d_save = (float *)LAPACKE_malloc( n * sizeof(float) ); e_save = (float *)LAPACKE_malloc( n * sizeof(float) ); vt_save = (lapack_complex_float *) LAPACKE_malloc( ldvt*ncvt * sizeof(lapack_complex_float) ); u_save = (lapack_complex_float *) LAPACKE_malloc( ldu*n * sizeof(lapack_complex_float) ); c_save = (lapack_complex_float *) LAPACKE_malloc( ldc*ncc * sizeof(lapack_complex_float) ); /* Allocate memory for the row-major arrays */ vt_r = (lapack_complex_float *) LAPACKE_malloc( n*(ncvt+2) * sizeof(lapack_complex_float) ); u_r = (lapack_complex_float *) LAPACKE_malloc( nru*(n+2) * sizeof(lapack_complex_float) ); c_r = (lapack_complex_float *) LAPACKE_malloc( n*(ncc+2) * sizeof(lapack_complex_float) ); /* Initialize input arrays */ init_d( n, d ); init_e( n, e ); init_vt( ldvt*ncvt, vt ); init_u( ldu*n, u ); init_c( ldc*ncc, c ); init_work( 4*n, work ); /* Backup the ouptut arrays */ for( i = 0; i < n; i++ ) { d_save[i] = d[i]; } for( i = 0; i < n; i++ ) { e_save[i] = e[i]; } for( i = 0; i < ldvt*ncvt; i++ ) { vt_save[i] = vt[i]; } for( i = 0; i < ldu*n; i++ ) { u_save[i] = u[i]; } for( i = 0; i < ldc*ncc; i++ ) { c_save[i] = c[i]; } /* Call the LAPACK routine */ cbdsqr_( &uplo, &n, &ncvt, &nru, &ncc, d, e, vt, &ldvt, u, &ldu, c, &ldc, work, &info ); /* Initialize input data, call the column-major middle-level * interface to LAPACK routine and check the results */ for( i = 0; i < n; i++ ) { d_i[i] = d_save[i]; } for( i = 0; i < n; i++ ) { e_i[i] = e_save[i]; } for( i = 0; i < ldvt*ncvt; i++ ) { vt_i[i] = vt_save[i]; } for( i = 0; i < ldu*n; i++ ) { u_i[i] = u_save[i]; } for( i = 0; i < ldc*ncc; i++ ) { c_i[i] = c_save[i]; } for( i = 0; i < 4*n; i++ ) { work_i[i] = work[i]; } info_i = LAPACKE_cbdsqr_work( LAPACK_COL_MAJOR, uplo_i, n_i, ncvt_i, nru_i, ncc_i, d_i, e_i, vt_i, ldvt_i, u_i, ldu_i, c_i, ldc_i, work_i ); failed = compare_cbdsqr( d, d_i, e, e_i, vt, vt_i, u, u_i, c, c_i, info, info_i, ldc, ldu, ldvt, n, ncc, ncvt, nru ); if( failed == 0 ) { printf( "PASSED: column-major middle-level interface to cbdsqr\n" ); } else { printf( "FAILED: column-major middle-level interface to cbdsqr\n" ); } /* Initialize input data, call the column-major high-level * interface to LAPACK routine and check the results */ for( i = 0; i < n; i++ ) { d_i[i] = d_save[i]; } for( i = 0; i < n; i++ ) { e_i[i] = e_save[i]; } for( i = 0; i < ldvt*ncvt; i++ ) { vt_i[i] = vt_save[i]; } for( i = 0; i < ldu*n; i++ ) { u_i[i] = u_save[i]; } for( i = 0; i < ldc*ncc; i++ ) { c_i[i] = c_save[i]; } for( i = 0; i < 4*n; i++ ) { work_i[i] = work[i]; } info_i = LAPACKE_cbdsqr( LAPACK_COL_MAJOR, uplo_i, n_i, ncvt_i, nru_i, ncc_i, d_i, e_i, vt_i, ldvt_i, u_i, ldu_i, c_i, ldc_i ); failed = compare_cbdsqr( d, d_i, e, e_i, vt, vt_i, u, u_i, c, c_i, info, info_i, ldc, ldu, ldvt, n, ncc, ncvt, nru ); if( failed == 0 ) { printf( "PASSED: column-major high-level interface to cbdsqr\n" ); } else { printf( "FAILED: column-major high-level interface to cbdsqr\n" ); } /* Initialize input data, call the row-major middle-level * interface to LAPACK routine and check the results */ for( i = 0; i < n; i++ ) { d_i[i] = d_save[i]; } for( i = 0; i < n; i++ ) { e_i[i] = e_save[i]; } for( i = 0; i < ldvt*ncvt; i++ ) { vt_i[i] = vt_save[i]; } for( i = 0; i < ldu*n; i++ ) { u_i[i] = u_save[i]; } for( i = 0; i < ldc*ncc; i++ ) { c_i[i] = c_save[i]; } for( i = 0; i < 4*n; i++ ) { work_i[i] = work[i]; } if( ncvt != 0 ) { LAPACKE_cge_trans( LAPACK_COL_MAJOR, n, ncvt, vt_i, ldvt, vt_r, ncvt+2 ); } if( nru != 0 ) { LAPACKE_cge_trans( LAPACK_COL_MAJOR, nru, n, u_i, ldu, u_r, n+2 ); } if( ncc != 0 ) { LAPACKE_cge_trans( LAPACK_COL_MAJOR, n, ncc, c_i, ldc, c_r, ncc+2 ); } info_i = LAPACKE_cbdsqr_work( LAPACK_ROW_MAJOR, uplo_i, n_i, ncvt_i, nru_i, ncc_i, d_i, e_i, vt_r, ldvt_r, u_r, ldu_r, c_r, ldc_r, work_i ); if( ncvt != 0 ) { LAPACKE_cge_trans( LAPACK_ROW_MAJOR, n, ncvt, vt_r, ncvt+2, vt_i, ldvt ); } if( nru != 0 ) { LAPACKE_cge_trans( LAPACK_ROW_MAJOR, nru, n, u_r, n+2, u_i, ldu ); } if( ncc != 0 ) { LAPACKE_cge_trans( LAPACK_ROW_MAJOR, n, ncc, c_r, ncc+2, c_i, ldc ); } failed = compare_cbdsqr( d, d_i, e, e_i, vt, vt_i, u, u_i, c, c_i, info, info_i, ldc, ldu, ldvt, n, ncc, ncvt, nru ); if( failed == 0 ) { printf( "PASSED: row-major middle-level interface to cbdsqr\n" ); } else { printf( "FAILED: row-major middle-level interface to cbdsqr\n" ); } /* Initialize input data, call the row-major high-level * interface to LAPACK routine and check the results */ for( i = 0; i < n; i++ ) { d_i[i] = d_save[i]; } for( i = 0; i < n; i++ ) { e_i[i] = e_save[i]; } for( i = 0; i < ldvt*ncvt; i++ ) { vt_i[i] = vt_save[i]; } for( i = 0; i < ldu*n; i++ ) { u_i[i] = u_save[i]; } for( i = 0; i < ldc*ncc; i++ ) { c_i[i] = c_save[i]; } for( i = 0; i < 4*n; i++ ) { work_i[i] = work[i]; } /* Init row_major arrays */ if( ncvt != 0 ) { LAPACKE_cge_trans( LAPACK_COL_MAJOR, n, ncvt, vt_i, ldvt, vt_r, ncvt+2 ); } if( nru != 0 ) { LAPACKE_cge_trans( LAPACK_COL_MAJOR, nru, n, u_i, ldu, u_r, n+2 ); } if( ncc != 0 ) { LAPACKE_cge_trans( LAPACK_COL_MAJOR, n, ncc, c_i, ldc, c_r, ncc+2 ); } info_i = LAPACKE_cbdsqr( LAPACK_ROW_MAJOR, uplo_i, n_i, ncvt_i, nru_i, ncc_i, d_i, e_i, vt_r, ldvt_r, u_r, ldu_r, c_r, ldc_r ); if( ncvt != 0 ) { LAPACKE_cge_trans( LAPACK_ROW_MAJOR, n, ncvt, vt_r, ncvt+2, vt_i, ldvt ); } if( nru != 0 ) { LAPACKE_cge_trans( LAPACK_ROW_MAJOR, nru, n, u_r, n+2, u_i, ldu ); } if( ncc != 0 ) { LAPACKE_cge_trans( LAPACK_ROW_MAJOR, n, ncc, c_r, ncc+2, c_i, ldc ); } failed = compare_cbdsqr( d, d_i, e, e_i, vt, vt_i, u, u_i, c, c_i, info, info_i, ldc, ldu, ldvt, n, ncc, ncvt, nru ); if( failed == 0 ) { printf( "PASSED: row-major high-level interface to cbdsqr\n" ); } else { printf( "FAILED: row-major high-level interface to cbdsqr\n" ); } /* Release memory */ if( d != NULL ) { LAPACKE_free( d ); } if( d_i != NULL ) { LAPACKE_free( d_i ); } if( d_save != NULL ) { LAPACKE_free( d_save ); } if( e != NULL ) { LAPACKE_free( e ); } if( e_i != NULL ) { LAPACKE_free( e_i ); } if( e_save != NULL ) { LAPACKE_free( e_save ); } if( vt != NULL ) { LAPACKE_free( vt ); } if( vt_i != NULL ) { LAPACKE_free( vt_i ); } if( vt_r != NULL ) { LAPACKE_free( vt_r ); } if( vt_save != NULL ) { LAPACKE_free( vt_save ); } if( u != NULL ) { LAPACKE_free( u ); } if( u_i != NULL ) { LAPACKE_free( u_i ); } if( u_r != NULL ) { LAPACKE_free( u_r ); } if( u_save != NULL ) { LAPACKE_free( u_save ); } if( c != NULL ) { LAPACKE_free( c ); } if( c_i != NULL ) { LAPACKE_free( c_i ); } if( c_r != NULL ) { LAPACKE_free( c_r ); } if( c_save != NULL ) { LAPACKE_free( c_save ); } if( work != NULL ) { LAPACKE_free( work ); } if( work_i != NULL ) { LAPACKE_free( work_i ); } return 0; }
int main(void) { /* Local scalars */ lapack_int n, n_i; lapack_int info, info_i; lapack_int i; int failed; /* Local arrays */ double *d = NULL, *d_i = NULL; double *e = NULL, *e_i = NULL; double *d_save = NULL; double *e_save = NULL; /* Iniitialize the scalar parameters */ init_scalars_dsterf( &n ); n_i = n; /* Allocate memory for the LAPACK routine arrays */ d = (double *)LAPACKE_malloc( n * sizeof(double) ); e = (double *)LAPACKE_malloc( (n-1) * sizeof(double) ); /* Allocate memory for the C interface function arrays */ d_i = (double *)LAPACKE_malloc( n * sizeof(double) ); e_i = (double *)LAPACKE_malloc( (n-1) * sizeof(double) ); /* Allocate memory for the backup arrays */ d_save = (double *)LAPACKE_malloc( n * sizeof(double) ); e_save = (double *)LAPACKE_malloc( (n-1) * sizeof(double) ); /* Allocate memory for the row-major arrays */ /* Initialize input arrays */ init_d( n, d ); init_e( (n-1), e ); /* Backup the ouptut arrays */ for( i = 0; i < n; i++ ) { d_save[i] = d[i]; } for( i = 0; i < (n-1); i++ ) { e_save[i] = e[i]; } /* Call the LAPACK routine */ dsterf_( &n, d, e, &info ); /* Initialize input data, call the column-major middle-level * interface to LAPACK routine and check the results */ for( i = 0; i < n; i++ ) { d_i[i] = d_save[i]; } for( i = 0; i < (n-1); i++ ) { e_i[i] = e_save[i]; } info_i = LAPACKE_dsterf_work( n_i, d_i, e_i ); failed = compare_dsterf( d, d_i, e, e_i, info, info_i, n ); if( failed == 0 ) { printf( "PASSED: column-major middle-level interface to dsterf\n" ); } else { printf( "FAILED: column-major middle-level interface to dsterf\n" ); } /* Initialize input data, call the column-major high-level * interface to LAPACK routine and check the results */ for( i = 0; i < n; i++ ) { d_i[i] = d_save[i]; } for( i = 0; i < (n-1); i++ ) { e_i[i] = e_save[i]; } info_i = LAPACKE_dsterf( n_i, d_i, e_i ); failed = compare_dsterf( d, d_i, e, e_i, info, info_i, n ); if( failed == 0 ) { printf( "PASSED: column-major high-level interface to dsterf\n" ); } else { printf( "FAILED: column-major high-level interface to dsterf\n" ); } failed = compare_dsterf( d, d_i, e, e_i, info, info_i, n ); if( failed == 0 ) { printf( "PASSED: row-major middle-level interface to dsterf\n" ); } else { printf( "FAILED: row-major middle-level interface to dsterf\n" ); } failed = compare_dsterf( d, d_i, e, e_i, info, info_i, n ); if( failed == 0 ) { printf( "PASSED: row-major high-level interface to dsterf\n" ); } else { printf( "FAILED: row-major high-level interface to dsterf\n" ); } /* Release memory */ if( d != NULL ) { LAPACKE_free( d ); } if( d_i != NULL ) { LAPACKE_free( d_i ); } if( d_save != NULL ) { LAPACKE_free( d_save ); } if( e != NULL ) { LAPACKE_free( e ); } if( e_i != NULL ) { LAPACKE_free( e_i ); } if( e_save != NULL ) { LAPACKE_free( e_save ); } return 0; }