Skip to content
LIBRARY
Math.Tests.Log.md

Math.Tests.Log ​

Computes the natural logarithm of constant and time-varying inputs.

Connects a constant source with value 1 to a Log block and verifies that log(1) = 0. A second Log block is driven by a sine wave (offset 2, amplitude 1.5) that stays strictly positive (0.5..3.5) as required by the logarithm domain while varying over time.

Usage ​

BlockComponents.Math.Tests.Log()

Behavior ​

Source ​

dyad
"""
Computes the natural logarithm of constant and time-varying inputs.

Connects a constant source with value 1 to a Log block and verifies that
log(1) = 0. A second Log block is driven by a sine wave (offset 2,
amplitude 1.5) that stays strictly positive (0.5..3.5) as required by the
logarithm domain while varying over time.
"""
test component Log
  "Constant source providing the input value"
  c1 = BlockComponents.Sources.Constant(k = 1) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 20, "y1": 20, "x2": 120, "y2": 120, "rot": 0}
      },
      "tags": []
    }
  }
  "Sine source kept strictly positive for the log domain"
  sine = BlockComponents.Sources.Sine(amplitude = 1.5, frequency = 1, offset = 2) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 20, "y1": 140, "x2": 120, "y2": 240, "rot": 0}
      },
      "tags": []
    }
  }
  "Log block under test"
  log_block = BlockComponents.Math.Log() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 160, "y1": 20, "x2": 260, "y2": 120, "rot": 0}
      },
      "tags": []
    }
  }
  "Second Log block driven by the sine source"
  log_block_2 = BlockComponents.Math.Log() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 170, "y1": 140, "x2": 270, "y2": 240, "rot": 0}
      },
      "tags": []
    }
  }
relations
  connect(c1.y, log_block.u) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
  connect(sine.y, log_block_2.u) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
metadata {
  "Dyad": {
    "icons": {"default": "dyad://BlockComponents/Example.svg"},
    "tests": {
      "case1": {"stop": 1, "expect": {"signals": ["log_block.y", "log_block_2.y", "sine.y"]}}
    }
  }
}
end
Flattened Source
dyad
"""
Computes the natural logarithm of constant and time-varying inputs.

Connects a constant source with value 1 to a Log block and verifies that
log(1) = 0. A second Log block is driven by a sine wave (offset 2,
amplitude 1.5) that stays strictly positive (0.5..3.5) as required by the
logarithm domain while varying over time.
"""
test component Log
  "Constant source providing the input value"
  c1 = BlockComponents.Sources.Constant(k = 1) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 20, "y1": 20, "x2": 120, "y2": 120, "rot": 0}
      },
      "tags": []
    }
  }
  "Sine source kept strictly positive for the log domain"
  sine = BlockComponents.Sources.Sine(amplitude = 1.5, frequency = 1, offset = 2) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 20, "y1": 140, "x2": 120, "y2": 240, "rot": 0}
      },
      "tags": []
    }
  }
  "Log block under test"
  log_block = BlockComponents.Math.Log() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 160, "y1": 20, "x2": 260, "y2": 120, "rot": 0}
      },
      "tags": []
    }
  }
  "Second Log block driven by the sine source"
  log_block_2 = BlockComponents.Math.Log() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 170, "y1": 140, "x2": 270, "y2": 240, "rot": 0}
      },
      "tags": []
    }
  }
relations
  connect(c1.y, log_block.u) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
  connect(sine.y, log_block_2.u) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
metadata {
  "Dyad": {
    "icons": {"default": "dyad://BlockComponents/Example.svg"},
    "tests": {
      "case1": {"stop": 1, "expect": {"signals": ["log_block.y", "log_block_2.y", "sine.y"]}}
    }
  }
}
end


Test Cases ​

Test Case case1 ​

julia
plt

julia
plt

julia
plt