import SwiftUI
import Observation

@Observable class ApplicationData {
   var logs: String = ""
   var training: Bool = false
   
   @ObservationIgnored var data: NetworkData!

   static let shared: ApplicationData = ApplicationData()
   private init() { }

   func trainNetwork() {
      logs = ""
      training = true
      data = NetworkData()

      // Forward propagation
      let output = forwardPass()

      // Show output
      let last = String(format: "%.6f", output)
      logs += "Last Output: \(last)\n"
   }
   func forwardPass() -> Double {
      // Calculate hidden layer
      data.z1 = data.input * data.weight1 + data.bias1
      data.a1 = 1 / (1 + exp(-data.z1))

      // Calculate output layer
      let output = data.a1 * data.weight2 + data.bias2
      return output
   }
}