Commit 053e259b authored by Theo Steininger's avatar Theo Steininger

Added check if synthesized field should be real valued in Field.power_synthesize

parent 20edb351
Pipeline #16637 passed with stage
in 29 minutes and 9 seconds
...@@ -599,6 +599,9 @@ class Field(Loggable, Versionable, object): ...@@ -599,6 +599,9 @@ class Field(Loggable, Versionable, object):
if real_power: if real_power:
result = result_list[0] result = result_list[0]
if not issubclass(result_val_list[0].dtype.type,
np.complexfloating):
result = result.real
else: else:
result = result_list[0] + 1j*result_list[1] result = result_list[0] + 1j*result_list[1]
...@@ -613,9 +616,17 @@ class Field(Loggable, Versionable, object): ...@@ -613,9 +616,17 @@ class Field(Loggable, Versionable, object):
flipped_val = domain[space].hermitianize_inverter( flipped_val = domain[space].hermitianize_inverter(
x=flipped_val, x=flipped_val,
axes=domain_axes[space]) axes=domain_axes[space])
flipped_val = flipped_val.conjugate() # if no flips at all where performed `h` is a real field.
h = (val + flipped_val)/2. # if all spaces use the default implementation of doing nothing when
a = val - h # applying no flips, one can you object comparison to infer this case.
if flipped_val is val:
h = flipped_val.real
a = 1j * flipped_val.imag
else:
flipped_val = flipped_val.conjugate()
h = (val + flipped_val)/2.
a = val - h
# correct variance # correct variance
if preserve_gaussian_variance: if preserve_gaussian_variance:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment