# Apple patents involve power functions, hash functions, more

Five Apple patents that only the most tech savvy could love (though I’m sure they’re great patents) have appeared at the US Patent and Trademark Office. Here’s a summary of each.

Patent number 20100111415 is for computations of power functions using polynomial approximations. Per the patent, a power function is approximated over an applicable data interval with polynomials determined by means of a Chebyshev minimax approximation technique. In some cases, multiple polynomials may be used to approximate the function over respective ranges of the desirable interval, in a piecewise manner. The appropriate polynomial that approximates the power function over the range of interest is derived and stored. When the power function is to be applied to a particular data value, the data value is first evaluated to determine where it lies within the applicable interval. The constants for the polynomial associated with that range of the interval are then retrieved and used to calculate the power of that data value. The inventors are Ali Sazegari and Ian Ollmann.

Patent number 20100111292 involves an aggregate and parallelization has function. A hash provides aggregation properties, and allows distributed and/or concurrent processing. The inventors are Pierre Betouin, Mathieu Ciet and Augustin J. Farrugia.

Patent number 20100115230 is for hash functions using recurrency and arithmetic. Aspects relate to systems and methods for implementing a hash function using a stochastic and recurrent process, and performing arithmetic operations during the recurrence on portions of a message being hashed. In an example method, the stochastic process is a Galton-Watson process, the message is decomposed into blocks, and the method involves looping for a number of blocks in the message. In each loop, a current hash value is determined based on arithmetic performed on a previous hash value and some aspect of a current block. The arithmetic performed can involve modular arithmetic, such as modular addition and exponentiation. The algorithm can be adjusted to achieve qualities including a variable length output, or to perform fewer or more computations for a given hash. Also, randomizing elements can be introduced into the arithmetic, avoiding a modular reduction until final hash output production. The inventors are Mathieu Ciet, Michael L. Crogan, Augustin J. Farrugia and Nicolas T. Sullivan.

Patent number 20100115275 involves a system and method for derivating deterministic binary values. Disclosed are systems, computer-implemented methods, and computer-readable media for deriving a deterministic binary value. The method consists of generating a graph from multiple inputs, formalizing the graph, calculating paths between starting and ending nodes in the graph using a shortest path algorithm and performing a digest operation based on the derived paths to generate a deterministic binary value. In another aspect of this disclosure, authentication is performed utilizing deterministic binary values and a graph-merging function. This method allows for diversity in complexity, thus maintaining security on different computer platforms. The inventors are Pierre Betouin, Mathieu Ciet and Augustin J. Farrugia.

Patent number 20100115287 involves a system and method for obfuscating constants in a computer program. Disclosed are systems, computer-implemented methods, and tangible computer-readable media for obfuscating constants in a binary. The method includes generating a table of constants, allocating an array in source code, compiling the source code to a binary, transforming the table of constants to match Pcode entries in an indirection table so that each constant in the table of constants can be fetched by an entry in the indirection table. A Pcode is a data representation of a set of instructions populating the indirection table with offsets toward the table of constants storing the indirection table in the allocated array in the compiled binary. The method further includes populating the indirection table with offsets equivalent to the table of constants, and storing the indirection table in the allocated array in the compiled binary. Constants can be of any data type. Constants can be one byte each or more than one byte each. In one aspect, the method further includes splitting constants into two or more segments, treating each segment as a separate constant when transforming the table of constants, and generating a function to retrieve and reconstruct the split constants. The inventors are Pierre Betouin, Mathieu Ciet and Augustin J. Farrugia.