|
libflame
12600
|
Functions | |
| FLA_Error | FLA_Mach_params (FLA_Machval machval, FLA_Obj val) |
| float | FLA_Mach_params_ops (FLA_Machval machval) |
| double | FLA_Mach_params_opd (FLA_Machval machval) |
| FLA_Error FLA_Mach_params | ( | FLA_Machval | machval, |
| FLA_Obj | val | ||
| ) |
References FLA_Check_error_level(), FLA_Mach_params_check(), FLA_Mach_params_opd(), FLA_Mach_params_ops(), and FLA_Obj_datatype().
Referenced by FLA_Hevd_compute_scaling(), FLA_Hevdr_external(), and FLA_Svd_compute_scaling().
{
FLA_Datatype datatype;
datatype = FLA_Obj_datatype( val );
if ( FLA_Check_error_level() >= FLA_MIN_ERROR_CHECKING )
FLA_Mach_params_check( machval, val );
switch ( datatype )
{
case FLA_FLOAT:
{
float* val_p = ( float* ) FLA_FLOAT_PTR( val );
*val_p = FLA_Mach_params_ops( machval );
break;
}
case FLA_DOUBLE:
{
double* val_p = ( double* ) FLA_DOUBLE_PTR( val );
*val_p = FLA_Mach_params_opd( machval );
break;
}
}
return FLA_SUCCESS;
}
| double FLA_Mach_params_opd | ( | FLA_Machval | machval | ) |
References fla_dlamch(), and FLA_Param_map_flame_to_netlib_machval().
Referenced by FLA_Bsvd_compute_shift_opd(), FLA_Bsvd_compute_tol_thresh_opd(), FLA_Bsvd_ext_opd_var1(), FLA_Bsvd_ext_opz_var1(), FLA_Bsvd_v_opd_var1(), FLA_Bsvd_v_opd_var2(), FLA_Bsvd_v_opz_var1(), FLA_Bsvd_v_opz_var2(), FLA_Givens2_opd(), FLA_Mach_params(), FLA_Svv_2x2_opd(), FLA_Tevd_compute_scaling_opd(), FLA_Tevd_eigval_n_opd_var1(), FLA_Tevd_eigval_v_opd_var1(), FLA_Tevd_eigval_v_opd_var3(), FLA_Tevd_find_submatrix_opd(), FLA_Tevd_francis_n_opd_var1(), FLA_Tevd_francis_v_opd_var1(), and FLA_Tevd_n_opz_var1().
{
static int first_time = TRUE;
static double vals[FLA_MACH_N_VALS];
if ( first_time )
{
char lapack_machval;
int i;
for( i = 0; i < FLA_MACH_N_VALS - 1; ++i )
{
FLA_Param_map_flame_to_netlib_machval( FLA_MACH_START + i, &lapack_machval );
//printf( "querying %d %c\n", FLA_MACH_START + i, lapack_machval );
vals[i] = fla_dlamch( &lapack_machval, 1 );
//printf( "got back %34.29e\n", vals[i] );
}
// Store epsilon^2 in the last element.
vals[i] = vals[0] * vals[0];
first_time = FALSE;
}
return vals[ machval - FLA_MACH_START ];
}
| float FLA_Mach_params_ops | ( | FLA_Machval | machval | ) |
References FLA_Param_map_flame_to_netlib_machval(), and fla_slamch().
Referenced by FLA_Bsvd_compute_shift_ops(), FLA_Bsvd_compute_tol_thresh_ops(), FLA_Bsvd_ext_opc_var1(), FLA_Bsvd_ext_ops_var1(), FLA_Bsvd_v_opc_var1(), FLA_Bsvd_v_ops_var1(), FLA_Mach_params(), FLA_Svv_2x2_ops(), and FLA_Tevd_compute_scaling_ops().
{
static int first_time = TRUE;
static float vals[FLA_MACH_N_VALS];
if ( first_time )
{
char lapack_machval;
int i;
for( i = 0; i < FLA_MACH_N_VALS - 1; ++i )
{
FLA_Param_map_flame_to_netlib_machval( FLA_MACH_START + i, &lapack_machval );
//printf( "querying %d %c\n", FLA_MACH_START + i, lapack_machval );
vals[i] = fla_slamch( &lapack_machval, 1 );
//printf( "got back %34.29e\n", vals[i] );
}
// Store epsilon^2 in the last element.
vals[i] = vals[0] * vals[0];
first_time = FALSE;
}
return vals[ machval - FLA_MACH_START ];
}
1.7.6.1