summaryrefslogtreecommitdiff
path: root/numpy/core/arrayprint.py
diff options
context:
space:
mode:
Diffstat (limited to 'numpy/core/arrayprint.py')
-rw-r--r--numpy/core/arrayprint.py28
1 files changed, 22 insertions, 6 deletions
diff --git a/numpy/core/arrayprint.py b/numpy/core/arrayprint.py
index 9d06d82ca..613f89ed9 100644
--- a/numpy/core/arrayprint.py
+++ b/numpy/core/arrayprint.py
@@ -16,6 +16,7 @@ import sys
import numeric as _gen
import numerictypes as _nt
import umath as _uf
+from multiarray import format_longfloat
from oldnumeric import ravel
_nc = _gen
@@ -155,19 +156,19 @@ def _array2string(a, max_line_width, precision, suppress_small, separator=' ',
format_function = lambda x: _formatInteger(x, format)
elif issubclass(dtype, _nt.floating):
if issubclass(dtype, _nt.longfloat):
- format_function = str
+ format_function = _longfloatFormatter(precision)
else:
format = _floatFormat(data, precision, suppress_small)
format_function = lambda x: _formatFloat(x, format)
elif issubclass(dtype, _nt.complexfloating):
if issubclass(dtype, _nt.clongfloat):
- real_format = imag_format = '%s'
+ format_function = _clongfloatFormatter(precision)
else:
real_format = _floatFormat(
data.real, precision, suppress_small, sign=0)
imag_format = _floatFormat(
data.imag, precision, suppress_small, sign=1)
- format_function = lambda x: \
+ format_function = lambda x: \
_formatComplex(x, real_format, imag_format)
elif issubclass(dtype, _nt.unicode_):
format = "%s"
@@ -300,9 +301,8 @@ def _floatFormat(data, precision, suppress_small, sign = 0):
if large_exponent: format = format + '3'
else:
format = '%.' + str(precision) + 'f'
- precision = min(precision, max(tuple(map(lambda x, p=precision,
- f=format: _digits(x,p,f),
- data))))
+ precision = min(precision, max([_digits(x, precision, format)
+ for x in data]))
max_str_len = len(str(int(max_val))) + precision + 2
if sign: format = '%#+'
else: format = '%#'
@@ -324,6 +324,11 @@ def _formatInteger(x, format):
else:
return "%s" % x
+def _longfloatFormatter(precision):
+ def formatter(x):
+ return format_longfloat(x, precision)
+ return formatter
+
def _formatFloat(x, format, strip_zeros = 1):
if format[-1] == '3':
# 3-digit exponent
@@ -347,6 +352,17 @@ def _formatFloat(x, format, strip_zeros = 1):
s = format % x
return s
+def _clongfloatFormatter(precision):
+ def formatter(x):
+ r = format_longfloat(x.real, precision)
+ i = format_longfloat(x.imag, precision)
+ if x.imag < 0:
+ i = '-' + i
+ else:
+ i = '+' + i
+ return r + i + 'j'
+ return formatter
+
def _formatComplex(x, real_format, imag_format):
r = _formatFloat(x.real, real_format)
i = _formatFloat(x.imag, imag_format, 0)