![]() |
MAGMA 2.9.0
Matrix Algebra for GPU and Multicore Architectures
|
Functions | |
magmaFloatComplex | magma_cmake_lwork (magma_int_t lwork) |
This deals with a subtle bug with returning lwork as a Float. | |
double | magma_dmake_lwork (magma_int_t lwork) |
This deals with a subtle bug with returning lwork as a Float. | |
float | magma_smake_lwork (magma_int_t lwork) |
This deals with a subtle bug with returning lwork as a Float. | |
magmaDoubleComplex | magma_zmake_lwork (magma_int_t lwork) |
This deals with a subtle bug with returning lwork as a Float. | |
magmaFloatComplex magma_cmake_lwork | ( | magma_int_t | lwork | ) |
This deals with a subtle bug with returning lwork as a Float.
If lwork > 2**24, then it will get rounded as a Float; we need to ensure it is rounded up instead of down, by multiplying by 1.+eps in Double precision:
float( 16777217 ) == 16777216 float( 16777217 * (1.+eps) ) == 16777218
where eps is Single precision machine epsilon. (Could use 1+2*eps in Single precision, but that can add more than necesary.) If lwork > 2**53, rounding would happen in Double, too, but that's 94M x 94M!
[in] | lwork | Workspace size. |
double magma_dmake_lwork | ( | magma_int_t | lwork | ) |
This deals with a subtle bug with returning lwork as a Float.
If lwork > 2**24, then it will get rounded as a Float; we need to ensure it is rounded up instead of down, by multiplying by 1.+eps in Double precision:
float( 16777217 ) == 16777216 float( 16777217 * (1.+eps) ) == 16777218
where eps is Single precision machine epsilon. (Could use 1+2*eps in Single precision, but that can add more than necesary.) If lwork > 2**53, rounding would happen in Double, too, but that's 94M x 94M!
[in] | lwork | Workspace size. |
float magma_smake_lwork | ( | magma_int_t | lwork | ) |
This deals with a subtle bug with returning lwork as a Float.
If lwork > 2**24, then it will get rounded as a Float; we need to ensure it is rounded up instead of down, by multiplying by 1.+eps in Double precision:
float( 16777217 ) == 16777216 float( 16777217 * (1.+eps) ) == 16777218
where eps is Single precision machine epsilon. (Could use 1+2*eps in Single precision, but that can add more than necesary.) If lwork > 2**53, rounding would happen in Double, too, but that's 94M x 94M!
[in] | lwork | Workspace size. |
magmaDoubleComplex magma_zmake_lwork | ( | magma_int_t | lwork | ) |
This deals with a subtle bug with returning lwork as a Float.
If lwork > 2**24, then it will get rounded as a Float; we need to ensure it is rounded up instead of down, by multiplying by 1.+eps in Double precision:
float( 16777217 ) == 16777216 float( 16777217 * (1.+eps) ) == 16777218
where eps is Single precision machine epsilon. (Could use 1+2*eps in Single precision, but that can add more than necesary.) If lwork > 2**53, rounding would happen in Double, too, but that's 94M x 94M!
[in] | lwork | Workspace size. |