code: public void inverse(double[] a) {
          int n = a.length;
  
          if (!Math.isPower2(n)) {
              throw new IllegalArgumentException("The data vector size is not a power of 2.");
          }
  
          if (n < ncof) {
              throw new IllegalArgumentException("The data vector size is less than wavelet coefficient size.");
          }
  
          int start = n >> (int) Math.floor(Math.log2(n/(ncof-1)));
          for (int nn = start; nn <= n; nn <<= 1) {
              backward(a, nn);
          }
      }
docs: Inverse discrete wavelet transform.