MAGMA
2.3.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. More...  
double  magma_dmake_lwork (magma_int_t lwork) 
This deals with a subtle bug with returning lwork as a Float. More...  
float  magma_smake_lwork (magma_int_t lwork) 
This deals with a subtle bug with returning lwork as a Float. More...  
magmaDoubleComplex  magma_zmake_lwork (magma_int_t lwork) 
This deals with a subtle bug with returning lwork as a Float. More...  
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. 