def eval_algorithm(closing, low, high):
    """ Evaluates the SO algorithm

        Args:
            closing: Float of current closing price.
            low: Float of lowest low closing price throughout some duration.
            high: Float of highest high closing price throughout some duration.

        Returns:
            Float SO between 0 and 100.
        """
    if high - low == 0:
        return 100 * (closing - low)
    else:
        return 100 * (closing - low) / (high - low)
