Documentation

Complexity.Algorithms.WordRAM.MatrixMultiplication.Schonhage.Callable.Program

Callable queried-product code #

The source product is unchanged. Its translated memory accesses use a runtime base in register 160 and a source-word modulus computed from the original row and query counts. The 160 source registers occupy the low bank; registers 161 and 162 are the modulus and address temporary.

Raw zero/one entries are still doubled by the original charged matrix-input loop. Setup and final normalization touch only the original input and answer spans, never the whole reserved window or caller catalogue. The code definitions here are internal implementation APIs.

@[reducible, inline]

Absolute result pointer returned to the caller. Also a setup argument register.

Instances For
    @[reducible, inline]

    Setup argument register.

    Instances For
      @[reducible, inline]

      Setup constant or normalization modulus.

      Instances For
        @[reducible, inline]

        Power exponent during setup.

        Instances For
          @[reducible, inline]

          Runtime source-memory base supplied by the caller.

          Instances For
            @[reducible, inline]

            Computed source-word modulus, preserved across the translated product.

            Instances For
              @[reducible, inline]

              Temporary absolute address.

              Instances For
                @[reducible, inline]

                Source register retaining the original input span length.

                Instances For
                  @[reducible, inline]

                  Source register retaining the relative answer pointer.

                  Instances For
                    @[reducible, inline]

                    Source register retaining the query occurrence count.

                    Instances For

                      The logarithm routine uses four low scratch registers.

                      Instances For

                        The power routine uses five low scratch registers.

                        Instances For

                          Array normalization uses seven low scratch registers.

                          Instances For

                            Read the actual row and occurrence-count headers, and form N+Q+3.

                            Instances For

                              Compute 2^(128*clog₂(N+Q+3)) with the existing logarithm and power programs.

                              Instances For

                                Normalize the restored local input, so its actual physical words equal their source words.

                                Instances For

                                  Normalize the exact output span and return its absolute address.

                                  Instances For

                                    One fixed native raw-input product callable above an arbitrary caller-supplied base. Every memory translation, source instruction and normalization is part of this code.

                                    Instances For

                                      Internal execution prefix through setup and the actual translated product.

                                      Instances For

                                        The derived source width is independent of the physical machine width.

                                        Instances For

                                          Polynomially bounded virtual address-space reservation; no bulk initialization is implied.

                                          Instances For