code: def print_dynamic_rmse(
      actuals: np.array,
      predicted: np.array,
      original: np.array,
      toprint: bool = True,
  ):
      """
      This utility calculates rmse between actuals and predicted. However, it does one more.
      Since in dynamic forecast, we need the longer original, it calculates Normalized RMSE
      using the original array's std deviation. That way, the forecast of 2 values does not
      result in a larger Normalized RMSE since the std deviation of 2 values will be v small.
      """
      rmse = np.sqrt(np.mean((actuals - predicted) ** 2))
      norm_rmse = rmse / original.std()
      if toprint:
          print("    RMSE = {:,.2f}".format(rmse))
          print(
              "    Std Deviation of actuals = {:,.2f}".format(
                  actuals.std()
              )
          )
          print(
              "    Normalized RMSE (as pct of std dev) = %0.0f%%"
              % (100 * norm_rmse)
          )
      return rmse, norm_rmse
  
file_path: Auto_TS/auto_ts/utils/metrics.py
imports: from typing import Tuple
  import numpy
  import pandas
  import matplotlib.pyplot
  from sklearn.metrics import mean_absolute_error, mean_squared_error
  import pdb
label_desc: Use image node_id 2 for calling a global function with example usage: print_dynamic_rmse(actuals, predicted, original, toprint) and returns: rmse,  norm_rmse