def testOrdInvFHWT(signal):
     n = NumUtils.intLog2(len(signal))
     orig_signal = copy.deepcopy(signal)
     print('n = %d' % n)
     print('signal: %s' % str(signal))
     OneDHWT.ordFHWT(signal)
     print('OneDHWT: %s' % str(signal))
     OneDHWT.ordInvFHWT(signal)
     print('OneInvDHWT: %s' % str(signal))
     rslt = NumUtils.areEqualLists(signal, orig_signal)
     print('signal equality: %s' % str(rslt))
     return rslt
 def testOrdInvFHWTForNumItersGivenNumFwdIters(signal, num_fwd_iters,
                                               num_inv_iters):
     if num_inv_iters > num_fwd_iters:
         raise Exception('num_inv_iters > num_fwd_iters')
     num_avail_iters = NumUtils.intLog2(len(signal))
     if num_inv_iters > num_avail_iters:
         raise Exception('num_inv_iters > num_avail_iters')
     orig_signal = copy.deepcopy(signal)
     sig_copy = copy.deepcopy(signal)
     print('num_fwd_iters = %d' % num_fwd_iters)
     print('num_inv_iters  = %d' % num_inv_iters)
     OneDHWT.ordFHWTForNumIters(signal, num_fwd_iters)
     OneDHWT.ordFHWTForNumIters(sig_copy, num_fwd_iters - num_inv_iters)
     OneDHWT.ordInvFHWTForNumItersGivenNumFwdIters(signal, num_fwd_iters,
                                                   num_inv_iters)
     rslt = NumUtils.areEqualLists(signal, sig_copy)
     print(signal)
     print(sig_copy)
     print('signal equality: %s' % str(rslt))
     return rslt