ffi_float.py 774 B

1234567891011121314151617181920212223242526272829303132
  1. # test ffi float support
  2. try:
  3. import ffi
  4. except ImportError:
  5. print("SKIP")
  6. raise SystemExit
  7. def ffi_open(names):
  8. err = None
  9. for n in names:
  10. try:
  11. mod = ffi.open(n)
  12. return mod
  13. except OSError as e:
  14. err = e
  15. raise err
  16. libc = ffi_open(('libc.so', 'libc.so.0', 'libc.so.6', 'libc.dylib'))
  17. strtof = libc.func("f", "strtof", "sp")
  18. print('%.6f' % strtof('1.23', None))
  19. strtod = libc.func("d", "strtod", "sp")
  20. print('%.6f' % strtod('1.23', None))
  21. # test passing double and float args
  22. libm = ffi_open(('libm.so', 'libm.so.6', 'libc.so.0', 'libc.so.6', 'libc.dylib'))
  23. tgamma = libm.func('d', 'tgamma', 'd')
  24. for fun in (tgamma,):
  25. for val in (0.5, 1, 1.0, 1.5, 4, 4.0):
  26. print('%.6f' % fun(val))