HPSL supports to compute derived metrics and rank the list. That means you may provide arbitrary equations to compute derived values from supported metrics. The example given on this page uses StorageRatio, that is the amount of storage available per memory.

To adjust the equation see the equation rules, use the table below to adjust the computation and press the button.

**Data types**: Attributes of top level entities (e.g., sites) are scalars- When multiple subcomponents may exist, the result for an variable is an array (one value per component, components where the value is empty are ignored)

**Expressions**: Consist of list variables, numerical operators (+,-,*,/) for scalars- dotMultiply and dotDivide allow to multiply characteristics per component
- Reduction functions (min, max, avg) and functions (abs) to reduce an array to a scalar

**Variables**: You may use any variable from storage, site and supercomputer. You have to prefix the variable with the class, then add a colon and the correct variable name. See the list underneath the table for a description.**Computation**: The equation is computed per site.- Site variables are scalars.
- Storage and supercomputer are arrays, since a site may have multiple supercomputers and storage systems. Therefore, you must use an reduction functions to aggregate these arrays. It is possible to compute expressions based on multiple values from the same storage and computer, though.
- Example: min(x*2) computes the minimum per site but multiplies each value with 2 first.
- Example: min(dotMultiply(x.y*x.z)) computes per component x the multiplication of y and z and then takes the minimum.
- Example: sum(x) / y ⇒ Aggregates all x for valid subcomponents and divide by a single y

- It is not valid to operate with values from different components as their number may vary.