Skip to content

Instantly share code, notes, and snippets.

@jatinchowdhury18
Created October 6, 2022 09:37
Show Gist options
  • Save jatinchowdhury18/b6872a26c1e9ee5b817ddc200708531b to your computer and use it in GitHub Desktop.
Save jatinchowdhury18/b6872a26c1e9ee5b817ddc200708531b to your computer and use it in GitHub Desktop.
Wave digital model of the tone stack from the Fender Bassman guitar amplifier
Display the source blob
Display the rendered blob
Raw
{"cells":[{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["from src.wdf import *\n","from src.Rtype import RTypeAdaptor\n","from src.examples.Circuit import Circuit\n","import matplotlib.pyplot as plt\n",""]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["class BassmanToneStack(Circuit):\n"," def __init__(self, fs, bass, mid, treble) -> None:\n","\n"," self.fs = fs\n"," self.bass = -1\n"," self.mid = -1\n"," self.treble = -1\n"," \n"," self.R1max = 250.0e3\n"," self.R2max = 1.0e6\n"," self.R3max = 25.0e3\n","\n"," # Port B\n"," self.C1 = Capacitor(0.25e-9, fs)\n"," self.R1_plus = Resistor(self.R1max * 0.5)\n"," self.R1_minus = Resistor(self.R1max * 0.5)\n"," self.SR1 = SeriesAdaptor(self.R1_plus, self.R1_minus)\n"," self.Sb = SeriesAdaptor(self.SR1, self.C1)\n","\n"," # Port C\n"," self.R4 = Resistor(56.0e3)\n","\n"," # Port D\n"," self.C2 = Capacitor(20.0e-9, fs)\n","\n"," # Port E\n"," self.C3 = Capacitor(20.0e-9, fs)\n","\n"," # Port F\n"," self.R2 = Resistor(self.R2max * 0.5)\n"," self.R3_plus = Resistor(self.R3max * 0.5)\n"," self.Sf = SeriesAdaptor(self.R2, self.R3_plus)\n","\n"," # Port G\n"," self.R3_minus = Resistor(self.R3max * 0.5)\n","\n"," # R-Type adaptor\n"," self.R_adaptor = RTypeAdaptor([self.Sb, self.R4, self.C2, self.C3, self.Sf, self.R3_minus], self.impedance_calc, 0)\n","\n"," # Port A\n"," self.Vin = IdealVoltageSource(self.R_adaptor)\n","\n"," elements = [\n"," self.C1, self.R1_plus, self.R1_minus, self.SR1, self.Sb,\n"," self.R4, self.C2, self.C3, self.R2, self.R3_plus, self.Sf,\n"," self.R3_minus, self.R_adaptor, self.Vin\n"," ]\n","\n"," self.set_bass(bass)\n"," self.set_mid(mid)\n"," self.set_treble(treble)\n","\n"," super().__init__(elements, self.Vin, self.Vin, None)\n","\n"," def impedance_calc(self,R):\n"," Rb, Rc, Rd, Re, Rf, Rg = R.get_port_impedances()\n"," R.set_S_matrix ([[ 0, -(Rc*Rd + (Rc + Rd)*Re + Rc*Rf)/((Rb + Rc)*Rd + (Rb + Rc + Rd)*Re + (Rb + Rc + Rd)*Rf), -(Rb*Rd + Rb*Re + (Rb + Rd)*Rf)/((Rb + Rc)*Rd + (Rb + Rc + Rd)*Re + (Rb + Rc + Rd)*Rf), -(Rb*Re - Rc*Rf)/((Rb + Rc)*Rd + (Rb + Rc + Rd)*Re + (Rb + Rc + Rd)*Rf), -(Rb*Rd + (Rb + Rc + Rd)*Rf)/((Rb + Rc)*Rd + (Rb + Rc + Rd)*Re + (Rb + Rc + Rd)*Rf), -(Rc*Rd + (Rb + Rc + Rd)*Re)/((Rb + Rc)*Rd + (Rb + Rc + Rd)*Re + (Rb + Rc + Rd)*Rf), -1],\n"," [ -(Rb*Rc*Rd + Rb*Rc*Rf + (Rb*Rc + Rb*Rd)*Re)/(Rb*Rc*Rd + (Rb*Rc + Rb*Rd)*Re + (Rb*Rc + Rc*Rd + (Rb + Rc + Rd)*Re)*Rf + ((Rb + Rc)*Rd + (Rb + Rc + Rd)*Re + (Rb + Rc + Rd)*Rf)*Rg), -(Rb*Rb*Rc*Rd*Rd + (Rb*Rb*Rc + Rb*Rb*Rd)*Re*Re + (Rb*Rb*Rc - Rc*Rc*Rd - Rc*Rd*Rd + (Rb*Rb - Rc*Rc - 2*Rc*Rd - Rd*Rd)*Re)*Rf*Rf + (2*Rb*Rb*Rc*Rd + Rb*Rb*Rd*Rd)*Re + (2*Rb*Rb*Rc*Rd - Rc*Rc*Rd*Rd + (Rb*Rb - Rc*Rc - 2*Rc*Rd - Rd*Rd)*Re*Re + 2*(Rb*Rb*Rc - Rc*Rd*Rd + (Rb*Rb - Rc*Rc)*Rd)*Re)*Rf + ((Rb*Rb - Rc*Rc)*Rd*Rd + (Rb*Rb - Rc*Rc - 2*Rc*Rd - Rd*Rd)*Re*Re + (Rb*Rb - Rc*Rc - 2*Rc*Rd - Rd*Rd)*Rf*Rf - 2*(Rc*Rd*Rd - (Rb*Rb - Rc*Rc)*Rd)*Re - 2*(Rc*Rd*Rd - (Rb*Rb - Rc*Rc)*Rd - (Rb*Rb - Rc*Rc - 2*Rc*Rd - Rd*Rd)*Re)*Rf)*Rg)/((Rb*Rb*Rc + Rb*Rc*Rc)*Rd*Rd + (Rb*Rb*Rc + Rb*Rc*Rc + Rb*Rd*Rd + (Rb*Rb + 2*Rb*Rc)*Rd)*Re*Re + (Rb*Rb*Rc + Rb*Rc*Rc + Rc*Rd*Rd + (2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf*Rf + ((Rb*Rb + 2*Rb*Rc)*Rd*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd)*Re + ((2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc + (Rb + Rc)*Rd*Rd + (Rb*Rb + 3*Rb*Rc + Rc*Rc)*Rd)*Re)*Rf + ((Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Rf*Rf + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd)*Re + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf)*Rg), (Rb*Rb*Rc*Rd*Rd + (Rb*Rb*Rc + Rb*Rb*Rd)*Re*Re + (Rb*Rb*Rc + Rb*Rc*Rd + 2*(Rb*Rb + Rb*Rc + Rb*Rd)*Re)*Rf*Rf + (2*Rb*Rb*Rc*Rd + Rb*Rb*Rd*Rd)*Re + (2*Rb*Rb*Rc*Rd + Rb*Rc*Rd*Rd + 2*(Rb*Rb + Rb*Rc + Rb*Rd)*Re*Re + (2*Rb*Rb*Rc + Rb*Rd*Rd + 3*(Rb*Rb + Rb*Rc)*Rd)*Re)*Rf + 2*((Rb*Rb + Rb*Rc)*Rd*Rd + (Rb*Rb + Rb*Rc + Rb*Rd)*Re*Re + (Rb*Rb + Rb*Rc + Rb*Rd)*Rf*Rf + (Rb*Rd*Rd + 2*(Rb*Rb + Rb*Rc)*Rd)*Re + (Rb*Rd*Rd + 2*(Rb*Rb + Rb*Rc)*Rd + 2*(Rb*Rb + Rb*Rc + Rb*Rd)*Re)*Rf)*Rg)/((Rb*Rb*Rc + Rb*Rc*Rc)*Rd*Rd + (Rb*Rb*Rc + Rb*Rc*Rc + Rb*Rd*Rd + (Rb*Rb + 2*Rb*Rc)*Rd)*Re*Re + (Rb*Rb*Rc + Rb*Rc*Rc + Rc*Rd*Rd + (2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf*Rf + ((Rb*Rb + 2*Rb*Rc)*Rd*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd)*Re + ((2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc + (Rb + Rc)*Rd*Rd + (Rb*Rb + 3*Rb*Rc + Rc*Rc)*Rd)*Re)*Rf + ((Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Rf*Rf + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd)*Re + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf)*Rg), (Rb*Rb*Rc*Rd*Re + (Rb*Rb*Rc + Rb*Rb*Rd)*Re*Re + (2*Rb*Rb*Rc + Rb*Rc*Rc + 2*Rb*Rc*Rd + 2*(Rb*Rb + Rb*Rc + Rb*Rd)*Re)*Rf*Rf + (2*(Rb*Rb + Rb*Rc + Rb*Rd)*Re*Re + (2*Rb*Rb*Rc + Rb*Rc*Rc)*Rd + (3*Rb*Rb*Rc + Rb*Rc*Rc + (2*Rb*Rb + 3*Rb*Rc)*Rd)*Re)*Rf + 2*((Rb*Rb + Rb*Rc)*Rd*Re + (Rb*Rb + Rb*Rc + Rb*Rd)*Re*Re + (Rb*Rb + Rb*Rc + Rb*Rd)*Rf*Rf + ((Rb*Rb + Rb*Rc)*Rd + 2*(Rb*Rb + Rb*Rc + Rb*Rd)*Re)*Rf)*Rg)/((Rb*Rb*Rc + Rb*Rc*Rc)*Rd*Rd + (Rb*Rb*Rc + Rb*Rc*Rc + Rb*Rd*Rd + (Rb*Rb + 2*Rb*Rc)*Rd)*Re*Re + (Rb*Rb*Rc + Rb*Rc*Rc + Rc*Rd*Rd + (2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf*Rf + ((Rb*Rb + 2*Rb*Rc)*Rd*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd)*Re + ((2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc + (Rb + Rc)*Rd*Rd + (Rb*Rb + 3*Rb*Rc + Rc*Rc)*Rd)*Re)*Rf + ((Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Rf*Rf + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd)*Re + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf)*Rg), (Rb*Rb*Rc*Rd*Rd - (Rb*Rb*Rc + Rb*Rc*Rc + Rb*Rc*Rd)*Rf*Rf + (Rb*Rb*Rc*Rd + Rb*Rb*Rd*Rd)*Re - (Rb*Rc*Rc*Rd - Rb*Rc*Rd*Rd + (Rb*Rb*Rc + Rb*Rc*Rc - Rb*Rb*Rd - Rb*Rd*Rd)*Re)*Rf + 2*((Rb*Rb + Rb*Rc)*Rd*Rd + (Rb*Rd*Rd + (Rb*Rb + Rb*Rc)*Rd)*Re + (Rb*Rd*Rd + (Rb*Rb + Rb*Rc)*Rd)*Rf)*Rg)/((Rb*Rb*Rc + Rb*Rc*Rc)*Rd*Rd + (Rb*Rb*Rc + Rb*Rc*Rc + Rb*Rd*Rd + (Rb*Rb + 2*Rb*Rc)*Rd)*Re*Re + (Rb*Rb*Rc + Rb*Rc*Rc + Rc*Rd*Rd + (2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf*Rf + ((Rb*Rb + 2*Rb*Rc)*Rd*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd)*Re + ((2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc + (Rb + Rc)*Rd*Rd + (Rb*Rb + 3*Rb*Rc + Rc*Rc)*Rd)*Re)*Rf + ((Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Rf*Rf + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd)*Re + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf)*Rg), -((2*Rb*Rb*Rc + Rb*Rc*Rc)*Rd*Rd + (Rb*Rb*Rc + Rb*Rc*Rc + Rb*Rd*Rd + (Rb*Rb + 2*Rb*Rc)*Rd)*Re*Re + (2*(Rb*Rb + Rb*Rc)*Rd*Rd + (3*Rb*Rb*Rc + 2*Rb*Rc*Rc)*Rd)*Re + (2*Rb*Rc*Rd*Rd + (2*Rb*Rb*Rc + Rb*Rc*Rc)*Rd + (Rb*Rb*Rc + Rb*Rc*Rc + 2*Rb*Rd*Rd + (2*Rb*Rb + 3*Rb*Rc)*Rd)*Re)*Rf + 2*((Rb*Rb + Rb*Rc)*Rd*Rd + (Rb*Rd*Rd + (Rb*Rb + Rb*Rc)*Rd)*Re + (Rb*Rd*Rd + (Rb*Rb + Rb*Rc)*Rd)*Rf)*Rg)/((Rb*Rb*Rc + Rb*Rc*Rc)*Rd*Rd + (Rb*Rb*Rc + Rb*Rc*Rc + Rb*Rd*Rd + (Rb*Rb + 2*Rb*Rc)*Rd)*Re*Re + (Rb*Rb*Rc + Rb*Rc*Rc + Rc*Rd*Rd + (2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf*Rf + ((Rb*Rb + 2*Rb*Rc)*Rd*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd)*Re + ((2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc + (Rb + Rc)*Rd*Rd + (Rb*Rb + 3*Rb*Rc + Rc*Rc)*Rd)*Re)*Rf + ((Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Rf*Rf + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd)*Re + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf)*Rg), -(Rb*Rc*Rd + Rb*Rc*Rf + (Rb*Rc + Rb*Rd)*Re)/(Rb*Rc*Rd + (Rb*Rc + Rb*Rd)*Re + (Rb*Rc + Rc*Rd + (Rb + Rc + Rd)*Re)*Rf + ((Rb + Rc)*Rd + (Rb + Rc + Rd)*Re + (Rb + Rc + Rd)*Rf)*Rg)],\n"," [ -(Rb*Rc*Rd + Rb*Rc*Re + (Rb*Rc + Rc*Rd)*Rf)/(Rb*Rc*Rd + (Rb*Rc + Rb*Rd)*Re + (Rb*Rc + Rc*Rd + (Rb + Rc + Rd)*Re)*Rf + ((Rb + Rc)*Rd + (Rb + Rc + Rd)*Re + (Rb + Rc + Rd)*Rf)*Rg), (Rb*Rc*Rc*Rd*Rd + (Rb*Rc*Rc + Rb*Rc*Rd)*Re*Re + (Rb*Rc*Rc + Rc*Rc*Rd + 2*(Rb*Rc + Rc*Rc + Rc*Rd)*Re)*Rf*Rf + (2*Rb*Rc*Rc*Rd + Rb*Rc*Rd*Rd)*Re + (2*Rb*Rc*Rc*Rd + Rc*Rc*Rd*Rd + 2*(Rb*Rc + Rc*Rc + Rc*Rd)*Re*Re + (2*Rb*Rc*Rc + Rc*Rd*Rd + 3*(Rb*Rc + Rc*Rc)*Rd)*Re)*Rf + 2*((Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rc + Rc*Rc + Rc*Rd)*Re*Re + (Rb*Rc + Rc*Rc + Rc*Rd)*Rf*Rf + (Rc*Rd*Rd + 2*(Rb*Rc + Rc*Rc)*Rd)*Re + (Rc*Rd*Rd + 2*(Rb*Rc + Rc*Rc)*Rd + 2*(Rb*Rc + Rc*Rc + Rc*Rd)*Re)*Rf)*Rg)/((Rb*Rb*Rc + Rb*Rc*Rc)*Rd*Rd + (Rb*Rb*Rc + Rb*Rc*Rc + Rb*Rd*Rd + (Rb*Rb + 2*Rb*Rc)*Rd)*Re*Re + (Rb*Rb*Rc + Rb*Rc*Rc + Rc*Rd*Rd + (2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf*Rf + ((Rb*Rb + 2*Rb*Rc)*Rd*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd)*Re + ((2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc + (Rb + Rc)*Rd*Rd + (Rb*Rb + 3*Rb*Rc + Rc*Rc)*Rd)*Re)*Rf + ((Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Rf*Rf + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd)*Re + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf)*Rg), -(Rb*Rc*Rc*Rd*Rd + (Rb*Rc*Rc - Rb*Rb*Rd - Rb*Rd*Rd)*Re*Re + (Rb*Rc*Rc + Rc*Rc*Rd - (Rb*Rb - Rc*Rc + 2*Rb*Rd + Rd*Rd)*Re)*Rf*Rf + (2*Rb*Rc*Rc*Rd - Rb*Rb*Rd*Rd)*Re + (2*Rb*Rc*Rc*Rd + Rc*Rc*Rd*Rd - (Rb*Rb - Rc*Rc + 2*Rb*Rd + Rd*Rd)*Re*Re + 2*(Rb*Rc*Rc - Rb*Rd*Rd - (Rb*Rb - Rc*Rc)*Rd)*Re)*Rf - ((Rb*Rb - Rc*Rc)*Rd*Rd + (Rb*Rb - Rc*Rc + 2*Rb*Rd + Rd*Rd)*Re*Re + (Rb*Rb - Rc*Rc + 2*Rb*Rd + Rd*Rd)*Rf*Rf + 2*(Rb*Rd*Rd + (Rb*Rb - Rc*Rc)*Rd)*Re + 2*(Rb*Rd*Rd + (Rb*Rb - Rc*Rc)*Rd + (Rb*Rb - Rc*Rc + 2*Rb*Rd + Rd*Rd)*Re)*Rf)*Rg)/((Rb*Rb*Rc + Rb*Rc*Rc)*Rd*Rd + (Rb*Rb*Rc + Rb*Rc*Rc + Rb*Rd*Rd + (Rb*Rb + 2*Rb*Rc)*Rd)*Re*Re + (Rb*Rb*Rc + Rb*Rc*Rc + Rc*Rd*Rd + (2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf*Rf + ((Rb*Rb + 2*Rb*Rc)*Rd*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd)*Re + ((2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc + (Rb + Rc)*Rd*Rd + (Rb*Rb + 3*Rb*Rc + Rc*Rc)*Rd)*Re)*Rf + ((Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Rf*Rf + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd)*Re + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf)*Rg), -((Rb*Rb*Rc + 2*Rb*Rc*Rc)*Rd*Re + (Rb*Rb*Rc + 2*Rb*Rc*Rc + 2*Rb*Rc*Rd)*Re*Re + (Rb*Rc*Rc + Rc*Rc*Rd + 2*(Rb*Rc + Rc*Rc + Rc*Rd)*Re)*Rf*Rf + (Rb*Rc*Rc*Rd + 2*(Rb*Rc + Rc*Rc + Rc*Rd)*Re*Re + (Rb*Rb*Rc + 3*Rb*Rc*Rc + (3*Rb*Rc + 2*Rc*Rc)*Rd)*Re)*Rf + 2*((Rb*Rc + Rc*Rc)*Rd*Re + (Rb*Rc + Rc*Rc + Rc*Rd)*Re*Re + (Rb*Rc + Rc*Rc + Rc*Rd)*Rf*Rf + ((Rb*Rc + Rc*Rc)*Rd + 2*(Rb*Rc + Rc*Rc + Rc*Rd)*Re)*Rf)*Rg)/((Rb*Rb*Rc + Rb*Rc*Rc)*Rd*Rd + (Rb*Rb*Rc + Rb*Rc*Rc + Rb*Rd*Rd + (Rb*Rb + 2*Rb*Rc)*Rd)*Re*Re + (Rb*Rb*Rc + Rb*Rc*Rc + Rc*Rd*Rd + (2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf*Rf + ((Rb*Rb + 2*Rb*Rc)*Rd*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd)*Re + ((2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc + (Rb + Rc)*Rd*Rd + (Rb*Rb + 3*Rb*Rc + Rc*Rc)*Rd)*Re)*Rf + ((Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Rf*Rf + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd)*Re + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf)*Rg), -((Rb*Rb*Rc + 2*Rb*Rc*Rc)*Rd*Rd + (Rb*Rb*Rc + Rb*Rc*Rc + Rc*Rd*Rd + (2*Rb*Rc + Rc*Rc)*Rd)*Rf*Rf + (2*Rb*Rc*Rd*Rd + (Rb*Rb*Rc + 2*Rb*Rc*Rc)*Rd)*Re + (2*(Rb*Rc + Rc*Rc)*Rd*Rd + (2*Rb*Rb*Rc + 3*Rb*Rc*Rc)*Rd + (Rb*Rb*Rc + Rb*Rc*Rc + 2*Rc*Rd*Rd + (3*Rb*Rc + 2*Rc*Rc)*Rd)*Re)*Rf + 2*((Rb*Rc + Rc*Rc)*Rd*Rd + (Rc*Rd*Rd + (Rb*Rc + Rc*Rc)*Rd)*Re + (Rc*Rd*Rd + (Rb*Rc + Rc*Rc)*Rd)*Rf)*Rg)/((Rb*Rb*Rc + Rb*Rc*Rc)*Rd*Rd + (Rb*Rb*Rc + Rb*Rc*Rc + Rb*Rd*Rd + (Rb*Rb + 2*Rb*Rc)*Rd)*Re*Re + (Rb*Rb*Rc + Rb*Rc*Rc + Rc*Rd*Rd + (2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf*Rf + ((Rb*Rb + 2*Rb*Rc)*Rd*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd)*Re + ((2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc + (Rb + Rc)*Rd*Rd + (Rb*Rb + 3*Rb*Rc + Rc*Rc)*Rd)*Re)*Rf + ((Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Rf*Rf + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd)*Re + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf)*Rg), (Rb*Rc*Rc*Rd*Rd - (Rb*Rb*Rc + Rb*Rc*Rc + Rb*Rc*Rd)*Re*Re - (Rb*Rb*Rc*Rd - Rb*Rc*Rd*Rd)*Re + (Rb*Rc*Rc*Rd + Rc*Rc*Rd*Rd - (Rb*Rb*Rc + Rb*Rc*Rc - Rc*Rc*Rd - Rc*Rd*Rd)*Re)*Rf + 2*((Rb*Rc + Rc*Rc)*Rd*Rd + (Rc*Rd*Rd + (Rb*Rc + Rc*Rc)*Rd)*Re + (Rc*Rd*Rd + (Rb*Rc + Rc*Rc)*Rd)*Rf)*Rg)/((Rb*Rb*Rc + Rb*Rc*Rc)*Rd*Rd + (Rb*Rb*Rc + Rb*Rc*Rc + Rb*Rd*Rd + (Rb*Rb + 2*Rb*Rc)*Rd)*Re*Re + (Rb*Rb*Rc + Rb*Rc*Rc + Rc*Rd*Rd + (2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf*Rf + ((Rb*Rb + 2*Rb*Rc)*Rd*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd)*Re + ((2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc + (Rb + Rc)*Rd*Rd + (Rb*Rb + 3*Rb*Rc + Rc*Rc)*Rd)*Re)*Rf + ((Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Rf*Rf + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd)*Re + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf)*Rg), -(Rb*Rc*Rd + Rb*Rc*Re + (Rb*Rc + Rc*Rd)*Rf)/(Rb*Rc*Rd + (Rb*Rc + Rb*Rd)*Re + (Rb*Rc + Rc*Rd + (Rb + Rc + Rd)*Re)*Rf + ((Rb + Rc)*Rd + (Rb + Rc + Rd)*Re + (Rb + Rc + Rd)*Rf)*Rg)],\n"," [ -(Rb*Rd*Re - Rc*Rd*Rf)/(Rb*Rc*Rd + (Rb*Rc + Rb*Rd)*Re + (Rb*Rc + Rc*Rd + (Rb + Rc + Rd)*Re)*Rf + ((Rb + Rc)*Rd + (Rb + Rc + Rd)*Re + (Rb + Rc + Rd)*Rf)*Rg), (Rb*Rc*Rd*Rd*Re + (Rb*Rc*Rd + Rb*Rd*Rd)*Re*Re + (2*Rc*Rd*Rd + (2*Rb*Rc + Rc*Rc)*Rd + 2*((Rb + Rc)*Rd + Rd*Rd)*Re)*Rf*Rf + ((2*Rb*Rc + Rc*Rc)*Rd*Rd + 2*((Rb + Rc)*Rd + Rd*Rd)*Re*Re + ((2*Rb + 3*Rc)*Rd*Rd + (3*Rb*Rc + Rc*Rc)*Rd)*Re)*Rf + 2*((Rb + Rc)*Rd*Rd*Re + ((Rb + Rc)*Rd + Rd*Rd)*Re*Re + ((Rb + Rc)*Rd + Rd*Rd)*Rf*Rf + ((Rb + Rc)*Rd*Rd + 2*((Rb + Rc)*Rd + Rd*Rd)*Re)*Rf)*Rg)/((Rb*Rb*Rc + Rb*Rc*Rc)*Rd*Rd + (Rb*Rb*Rc + Rb*Rc*Rc + Rb*Rd*Rd + (Rb*Rb + 2*Rb*Rc)*Rd)*Re*Re + (Rb*Rb*Rc + Rb*Rc*Rc + Rc*Rd*Rd + (2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf*Rf + ((Rb*Rb + 2*Rb*Rc)*Rd*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd)*Re + ((2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc + (Rb + Rc)*Rd*Rd + (Rb*Rb + 3*Rb*Rc + Rc*Rc)*Rd)*Re)*Rf + ((Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Rf*Rf + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd)*Re + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf)*Rg), -((Rb*Rb + 2*Rb*Rc)*Rd*Rd*Re + (2*Rb*Rd*Rd + (Rb*Rb + 2*Rb*Rc)*Rd)*Re*Re + (Rb*Rc*Rd + Rc*Rd*Rd + 2*((Rb + Rc)*Rd + Rd*Rd)*Re)*Rf*Rf + (Rb*Rc*Rd*Rd + 2*((Rb + Rc)*Rd + Rd*Rd)*Re*Re + ((3*Rb + 2*Rc)*Rd*Rd + (Rb*Rb + 3*Rb*Rc)*Rd)*Re)*Rf + 2*((Rb + Rc)*Rd*Rd*Re + ((Rb + Rc)*Rd + Rd*Rd)*Re*Re + ((Rb + Rc)*Rd + Rd*Rd)*Rf*Rf + ((Rb + Rc)*Rd*Rd + 2*((Rb + Rc)*Rd + Rd*Rd)*Re)*Rf)*Rg)/((Rb*Rb*Rc + Rb*Rc*Rc)*Rd*Rd + (Rb*Rb*Rc + Rb*Rc*Rc + Rb*Rd*Rd + (Rb*Rb + 2*Rb*Rc)*Rd)*Re*Re + (Rb*Rb*Rc + Rb*Rc*Rc + Rc*Rd*Rd + (2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf*Rf + ((Rb*Rb + 2*Rb*Rc)*Rd*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd)*Re + ((2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc + (Rb + Rc)*Rd*Rd + (Rb*Rb + 3*Rb*Rc + Rc*Rc)*Rd)*Re)*Rf + ((Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Rf*Rf + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd)*Re + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf)*Rg), -((Rb*Rb + 2*Rb*Rc)*Rd*Rd*Re + (Rb*Rb*Rc + Rb*Rc*Rc)*Rd*Rd - (Rb*Rb*Rc + Rb*Rc*Rc - Rb*Rd*Rd)*Re*Re - (Rb*Rb*Rc + Rb*Rc*Rc - Rc*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc - Rd*Rd)*Re)*Rf*Rf + ((2*Rb*Rc + Rc*Rc)*Rd*Rd - (Rb*Rb + 2*Rb*Rc + Rc*Rc - Rd*Rd)*Re*Re - 2*(Rb*Rb*Rc + Rb*Rc*Rc - (Rb + Rc)*Rd*Rd)*Re)*Rf + (2*(Rb + Rc)*Rd*Rd*Re + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd*Rd - (Rb*Rb + 2*Rb*Rc + Rc*Rc - Rd*Rd)*Re*Re - (Rb*Rb + 2*Rb*Rc + Rc*Rc - Rd*Rd)*Rf*Rf + 2*((Rb + Rc)*Rd*Rd - (Rb*Rb + 2*Rb*Rc + Rc*Rc - Rd*Rd)*Re)*Rf)*Rg)/((Rb*Rb*Rc + Rb*Rc*Rc)*Rd*Rd + (Rb*Rb*Rc + Rb*Rc*Rc + Rb*Rd*Rd + (Rb*Rb + 2*Rb*Rc)*Rd)*Re*Re + (Rb*Rb*Rc + Rb*Rc*Rc + Rc*Rd*Rd + (2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf*Rf + ((Rb*Rb + 2*Rb*Rc)*Rd*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd)*Re + ((2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc + (Rb + Rc)*Rd*Rd + (Rb*Rb + 3*Rb*Rc + Rc*Rc)*Rd)*Re)*Rf + ((Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Rf*Rf + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd)*Re + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf)*Rg), (2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd*Rd + (Rc*Rd*Rd + (Rb*Rc + Rc*Rc)*Rd)*Rf*Rf + ((Rb*Rb + 2*Rb*Rc)*Rd*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd)*Re + ((3*Rb*Rc + 2*Rc*Rc)*Rd*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd + ((Rb + 2*Rc)*Rd*Rd + (Rb*Rb + 3*Rb*Rc + 2*Rc*Rc)*Rd)*Re)*Rf + 2*((Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd*Rd + ((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd)*Re + ((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd)*Rf)*Rg)/((Rb*Rb*Rc + Rb*Rc*Rc)*Rd*Rd + (Rb*Rb*Rc + Rb*Rc*Rc + Rb*Rd*Rd + (Rb*Rb + 2*Rb*Rc)*Rd)*Re*Re + (Rb*Rb*Rc + Rb*Rc*Rc + Rc*Rd*Rd + (2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf*Rf + ((Rb*Rb + 2*Rb*Rc)*Rd*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd)*Re + ((2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc + (Rb + Rc)*Rd*Rd + (Rb*Rb + 3*Rb*Rc + Rc*Rc)*Rd)*Re)*Rf + ((Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Rf*Rf + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd)*Re + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf)*Rg), -(2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd*Rd + (Rb*Rd*Rd + (Rb*Rb + Rb*Rc)*Rd)*Re*Re + ((2*Rb*Rb + 3*Rb*Rc)*Rd*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd)*Re + ((2*Rb*Rc + Rc*Rc)*Rd*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd + ((2*Rb + Rc)*Rd*Rd + (2*Rb*Rb + 3*Rb*Rc + Rc*Rc)*Rd)*Re)*Rf + 2*((Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd*Rd + ((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd)*Re + ((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd)*Rf)*Rg)/((Rb*Rb*Rc + Rb*Rc*Rc)*Rd*Rd + (Rb*Rb*Rc + Rb*Rc*Rc + Rb*Rd*Rd + (Rb*Rb + 2*Rb*Rc)*Rd)*Re*Re + (Rb*Rb*Rc + Rb*Rc*Rc + Rc*Rd*Rd + (2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf*Rf + ((Rb*Rb + 2*Rb*Rc)*Rd*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd)*Re + ((2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc + (Rb + Rc)*Rd*Rd + (Rb*Rb + 3*Rb*Rc + Rc*Rc)*Rd)*Re)*Rf + ((Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Rf*Rf + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd)*Re + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf)*Rg), -(Rb*Rd*Re - Rc*Rd*Rf)/(Rb*Rc*Rd + (Rb*Rc + Rb*Rd)*Re + (Rb*Rc + Rc*Rd + (Rb + Rc + Rd)*Re)*Rf + ((Rb + Rc)*Rd + (Rb + Rc + Rd)*Re + (Rb + Rc + Rd)*Rf)*Rg)],\n"," [ -(Rb*Rd*Re + (Rb + Rc + Rd)*Re*Rf)/(Rb*Rc*Rd + (Rb*Rc + Rb*Rd)*Re + (Rb*Rc + Rc*Rd + (Rb + Rc + Rd)*Re)*Rf + ((Rb + Rc)*Rd + (Rb + Rc + Rd)*Re + (Rb + Rc + Rd)*Rf)*Rg), (Rb*Rc*Rd*Rd*Re - (Rb*Rc + Rc*Rc + Rc*Rd)*Re*Rf*Rf + (Rb*Rc*Rd + Rb*Rd*Rd)*Re*Re - ((Rb*Rc + Rc*Rc - Rb*Rd - Rd*Rd)*Re*Re + (Rc*Rc*Rd - Rc*Rd*Rd)*Re)*Rf + 2*((Rb + Rc)*Rd*Rd*Re + ((Rb + Rc)*Rd + Rd*Rd)*Re*Re + ((Rb + Rc)*Rd + Rd*Rd)*Re*Rf)*Rg)/((Rb*Rb*Rc + Rb*Rc*Rc)*Rd*Rd + (Rb*Rb*Rc + Rb*Rc*Rc + Rb*Rd*Rd + (Rb*Rb + 2*Rb*Rc)*Rd)*Re*Re + (Rb*Rb*Rc + Rb*Rc*Rc + Rc*Rd*Rd + (2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf*Rf + ((Rb*Rb + 2*Rb*Rc)*Rd*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd)*Re + ((2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc + (Rb + Rc)*Rd*Rd + (Rb*Rb + 3*Rb*Rc + Rc*Rc)*Rd)*Re)*Rf + ((Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Rf*Rf + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd)*Re + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf)*Rg), -((Rb*Rb + 2*Rb*Rc)*Rd*Rd*Re + (Rb*Rb + Rb*Rc + (2*Rb + Rc)*Rd + Rd*Rd)*Re*Rf*Rf + (2*Rb*Rd*Rd + (Rb*Rb + 2*Rb*Rc)*Rd)*Re*Re + ((Rb*Rb + Rb*Rc + (3*Rb + 2*Rc)*Rd + 2*Rd*Rd)*Re*Re + (2*(Rb + Rc)*Rd*Rd + (2*Rb*Rb + 3*Rb*Rc)*Rd)*Re)*Rf + 2*((Rb + Rc)*Rd*Rd*Re + ((Rb + Rc)*Rd + Rd*Rd)*Re*Re + ((Rb + Rc)*Rd + Rd*Rd)*Re*Rf)*Rg)/((Rb*Rb*Rc + Rb*Rc*Rc)*Rd*Rd + (Rb*Rb*Rc + Rb*Rc*Rc + Rb*Rd*Rd + (Rb*Rb + 2*Rb*Rc)*Rd)*Re*Re + (Rb*Rb*Rc + Rb*Rc*Rc + Rc*Rd*Rd + (2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf*Rf + ((Rb*Rb + 2*Rb*Rc)*Rd*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd)*Re + ((2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc + (Rb + Rc)*Rd*Rd + (Rb*Rb + 3*Rb*Rc + Rc*Rc)*Rd)*Re)*Rf + ((Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Rf*Rf + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd)*Re + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf)*Rg), ((Rb*Rc + Rc*Rc + Rc*Rd)*Re*Rf*Rf + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd*Re + (2*Rb*Rb*Rc + 2*Rb*Rc*Rc + (Rb*Rb + 2*Rb*Rc)*Rd)*Re*Re + ((Rb*Rb + 3*Rb*Rc + 2*Rc*Rc + (Rb + 2*Rc)*Rd)*Re*Re + (2*Rb*Rb*Rc + 2*Rb*Rc*Rc + (3*Rb*Rc + 2*Rc*Rc)*Rd)*Re)*Rf + 2*((Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd*Re + (Rb*Rb + 2*Rb*Rc + Rc*Rc + (Rb + Rc)*Rd)*Re*Re + (Rb*Rb + 2*Rb*Rc + Rc*Rc + (Rb + Rc)*Rd)*Re*Rf)*Rg)/((Rb*Rb*Rc + Rb*Rc*Rc)*Rd*Rd + (Rb*Rb*Rc + Rb*Rc*Rc + Rb*Rd*Rd + (Rb*Rb + 2*Rb*Rc)*Rd)*Re*Re + (Rb*Rb*Rc + Rb*Rc*Rc + Rc*Rd*Rd + (2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf*Rf + ((Rb*Rb + 2*Rb*Rc)*Rd*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd)*Re + ((2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc + (Rb + Rc)*Rd*Rd + (Rb*Rb + 3*Rb*Rc + Rc*Rc)*Rd)*Re)*Rf + ((Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Rf*Rf + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd)*Re + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf)*Rg), ((Rb*Rb*Rc + Rb*Rc*Rc)*Rd*Rd - (Rb*Rb*Rc + Rb*Rc*Rc + Rb*Rd*Rd + (Rb*Rb + 2*Rb*Rc)*Rd)*Re*Re + (Rb*Rb*Rc + Rb*Rc*Rc + Rc*Rd*Rd + (2*Rb*Rc + Rc*Rc)*Rd)*Rf*Rf + ((2*Rb*Rc + Rc*Rc)*Rd*Rd - (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd)*Rf + ((Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd*Rd - (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Rf*Rf + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd)*Rf)*Rg)/((Rb*Rb*Rc + Rb*Rc*Rc)*Rd*Rd + (Rb*Rb*Rc + Rb*Rc*Rc + Rb*Rd*Rd + (Rb*Rb + 2*Rb*Rc)*Rd)*Re*Re + (Rb*Rb*Rc + Rb*Rc*Rc + Rc*Rd*Rd + (2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf*Rf + ((Rb*Rb + 2*Rb*Rc)*Rd*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd)*Re + ((2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc + (Rb + Rc)*Rd*Rd + (Rb*Rb + 3*Rb*Rc + Rc*Rc)*Rd)*Re)*Rf + ((Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Rf*Rf + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd)*Re + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf)*Rg), ((2*Rb*Rb*Rc + 2*Rb*Rc*Rc + Rb*Rd*Rd + (Rb*Rb + 3*Rb*Rc)*Rd)*Re*Re + (Rb*Rc*Rd*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd)*Re + ((Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + (2*Rb*Rb*Rc + 2*Rb*Rc*Rc + Rc*Rd*Rd + (3*Rb*Rc + Rc*Rc)*Rd)*Re)*Rf + 2*((Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Rf + ((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd)*Re)*Rg)/((Rb*Rb*Rc + Rb*Rc*Rc)*Rd*Rd + (Rb*Rb*Rc + Rb*Rc*Rc + Rb*Rd*Rd + (Rb*Rb + 2*Rb*Rc)*Rd)*Re*Re + (Rb*Rb*Rc + Rb*Rc*Rc + Rc*Rd*Rd + (2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf*Rf + ((Rb*Rb + 2*Rb*Rc)*Rd*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd)*Re + ((2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc + (Rb + Rc)*Rd*Rd + (Rb*Rb + 3*Rb*Rc + Rc*Rc)*Rd)*Re)*Rf + ((Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Rf*Rf + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd)*Re + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf)*Rg), -(Rb*Rd*Re + (Rb + Rc + Rd)*Re*Rf)/(Rb*Rc*Rd + (Rb*Rc + Rb*Rd)*Re + (Rb*Rc + Rc*Rd + (Rb + Rc + Rd)*Re)*Rf + ((Rb + Rc)*Rd + (Rb + Rc + Rd)*Re + (Rb + Rc + Rd)*Rf)*Rg)],\n"," [ -(Rc*Rd + (Rb + Rc + Rd)*Re)*Rf/(Rb*Rc*Rd + (Rb*Rc + Rb*Rd)*Re + (Rb*Rc + Rc*Rd + (Rb + Rc + Rd)*Re)*Rf + ((Rb + Rc)*Rd + (Rb + Rc + Rd)*Re + (Rb + Rc + Rd)*Rf)*Rg), -((2*Rc*Rd*Rd + (2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rc + Rc*Rc + (2*Rb + 3*Rc)*Rd + 2*Rd*Rd)*Re)*Rf*Rf + ((2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rc + Rc*Rc + (Rb + 2*Rc)*Rd + Rd*Rd)*Re*Re + (2*(Rb + Rc)*Rd*Rd + (3*Rb*Rc + 2*Rc*Rc)*Rd)*Re)*Rf + 2*(((Rb + Rc)*Rd + Rd*Rd)*Rf*Rf + ((Rb + Rc)*Rd*Rd + ((Rb + Rc)*Rd + Rd*Rd)*Re)*Rf)*Rg)/((Rb*Rb*Rc + Rb*Rc*Rc)*Rd*Rd + (Rb*Rb*Rc + Rb*Rc*Rc + Rb*Rd*Rd + (Rb*Rb + 2*Rb*Rc)*Rd)*Re*Re + (Rb*Rb*Rc + Rb*Rc*Rc + Rc*Rd*Rd + (2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf*Rf + ((Rb*Rb + 2*Rb*Rc)*Rd*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd)*Re + ((2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc + (Rb + Rc)*Rd*Rd + (Rb*Rb + 3*Rb*Rc + Rc*Rc)*Rd)*Re)*Rf + ((Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Rf*Rf + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd)*Re + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf)*Rg), ((Rb*Rc*Rd + Rc*Rd*Rd - (Rb*Rb + Rb*Rc - Rc*Rd - Rd*Rd)*Re)*Rf*Rf + (Rb*Rc*Rd*Rd - (Rb*Rb + Rb*Rc + Rb*Rd)*Re*Re - (Rb*Rb*Rd - Rb*Rd*Rd)*Re)*Rf + 2*(((Rb + Rc)*Rd + Rd*Rd)*Rf*Rf + ((Rb + Rc)*Rd*Rd + ((Rb + Rc)*Rd + Rd*Rd)*Re)*Rf)*Rg)/((Rb*Rb*Rc + Rb*Rc*Rc)*Rd*Rd + (Rb*Rb*Rc + Rb*Rc*Rc + Rb*Rd*Rd + (Rb*Rb + 2*Rb*Rc)*Rd)*Re*Re + (Rb*Rb*Rc + Rb*Rc*Rc + Rc*Rd*Rd + (2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf*Rf + ((Rb*Rb + 2*Rb*Rc)*Rd*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd)*Re + ((2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc + (Rb + Rc)*Rd*Rd + (Rb*Rb + 3*Rb*Rc + Rc*Rc)*Rd)*Re)*Rf + ((Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Rf*Rf + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd)*Re + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf)*Rg), -((2*Rb*Rb*Rc + 2*Rb*Rc*Rc + (2*Rb*Rc + Rc*Rc)*Rd + (2*Rb*Rb + 3*Rb*Rc + Rc*Rc + (2*Rb + Rc)*Rd)*Re)*Rf*Rf + ((Rb*Rb + Rb*Rc + Rb*Rd)*Re*Re + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd + (2*Rb*Rb*Rc + 2*Rb*Rc*Rc + (2*Rb*Rb + 3*Rb*Rc)*Rd)*Re)*Rf + 2*((Rb*Rb + 2*Rb*Rc + Rc*Rc + (Rb + Rc)*Rd)*Rf*Rf + ((Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + (Rb + Rc)*Rd)*Re)*Rf)*Rg)/((Rb*Rb*Rc + Rb*Rc*Rc)*Rd*Rd + (Rb*Rb*Rc + Rb*Rc*Rc + Rb*Rd*Rd + (Rb*Rb + 2*Rb*Rc)*Rd)*Re*Re + (Rb*Rb*Rc + Rb*Rc*Rc + Rc*Rd*Rd + (2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf*Rf + ((Rb*Rb + 2*Rb*Rc)*Rd*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd)*Re + ((2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc + (Rb + Rc)*Rd*Rd + (Rb*Rb + 3*Rb*Rc + Rc*Rc)*Rd)*Re)*Rf + ((Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Rf*Rf + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd)*Re + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf)*Rg), ((2*Rb*Rb*Rc + 2*Rb*Rc*Rc + Rc*Rd*Rd + (3*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf*Rf + (Rb*Rc*Rd*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd + (2*Rb*Rb*Rc + 2*Rb*Rc*Rc + Rb*Rd*Rd + (Rb*Rb + 3*Rb*Rc)*Rd)*Re)*Rf + 2*((Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Rf*Rf + ((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf)*Rg)/((Rb*Rb*Rc + Rb*Rc*Rc)*Rd*Rd + (Rb*Rb*Rc + Rb*Rc*Rc + Rb*Rd*Rd + (Rb*Rb + 2*Rb*Rc)*Rd)*Re*Re + (Rb*Rb*Rc + Rb*Rc*Rc + Rc*Rd*Rd + (2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf*Rf + ((Rb*Rb + 2*Rb*Rc)*Rd*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd)*Re + ((2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc + (Rb + Rc)*Rd*Rd + (Rb*Rb + 3*Rb*Rc + Rc*Rc)*Rd)*Re)*Rf + ((Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Rf*Rf + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd)*Re + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf)*Rg), ((Rb*Rb*Rc + Rb*Rc*Rc)*Rd*Rd + (Rb*Rb*Rc + Rb*Rc*Rc + Rb*Rd*Rd + (Rb*Rb + 2*Rb*Rc)*Rd)*Re*Re - (Rb*Rb*Rc + Rb*Rc*Rc + Rc*Rd*Rd + (2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf*Rf + ((Rb*Rb + 2*Rb*Rc)*Rd*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd)*Re + ((Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re - (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Rf*Rf + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd)*Re)*Rg)/((Rb*Rb*Rc + Rb*Rc*Rc)*Rd*Rd + (Rb*Rb*Rc + Rb*Rc*Rc + Rb*Rd*Rd + (Rb*Rb + 2*Rb*Rc)*Rd)*Re*Re + (Rb*Rb*Rc + Rb*Rc*Rc + Rc*Rd*Rd + (2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf*Rf + ((Rb*Rb + 2*Rb*Rc)*Rd*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd)*Re + ((2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + 2*(Rb*Rb*Rc + Rb*Rc*Rc)*Rd + 2*(Rb*Rb*Rc + Rb*Rc*Rc + (Rb + Rc)*Rd*Rd + (Rb*Rb + 3*Rb*Rc + Rc*Rc)*Rd)*Re)*Rf + ((Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re*Re + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Rf*Rf + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd)*Re + 2*((Rb + Rc)*Rd*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc)*Rd + (Rb*Rb + 2*Rb*Rc + Rc*Rc + 2*(Rb + Rc)*Rd + Rd*Rd)*Re)*Rf)*Rg), -(Rc*Rd + (Rb + Rc + Rd)*Re)*Rf/(Rb*Rc*Rd + (Rb*Rc + Rb*Rd)*Re + (Rb*Rc + Rc*Rd + (Rb + Rc + Rd)*Re)*Rf + ((Rb + Rc)*Rd + (Rb + Rc + Rd)*Re + (Rb + Rc + Rd)*Rf)*Rg)],\n"," [ -((Rb + Rc)*Rd + (Rb + Rc + Rd)*Re + (Rb + Rc + Rd)*Rf)*Rg/(Rb*Rc*Rd + (Rb*Rc + Rb*Rd)*Re + (Rb*Rc + Rc*Rd + (Rb + Rc + Rd)*Re)*Rf + ((Rb + Rc)*Rd + (Rb + Rc + Rd)*Re + (Rb + Rc + Rd)*Rf)*Rg), -(Rc*Rd + (Rc + Rd)*Re + Rc*Rf)*Rg/(Rb*Rc*Rd + (Rb*Rc + Rb*Rd)*Re + (Rb*Rc + Rc*Rd + (Rb + Rc + Rd)*Re)*Rf + ((Rb + Rc)*Rd + (Rb + Rc + Rd)*Re + (Rb + Rc + Rd)*Rf)*Rg), -(Rb*Rd + Rb*Re + (Rb + Rd)*Rf)*Rg/(Rb*Rc*Rd + (Rb*Rc + Rb*Rd)*Re + (Rb*Rc + Rc*Rd + (Rb + Rc + Rd)*Re)*Rf + ((Rb + Rc)*Rd + (Rb + Rc + Rd)*Re + (Rb + Rc + Rd)*Rf)*Rg), -(Rb*Re - Rc*Rf)*Rg/(Rb*Rc*Rd + (Rb*Rc + Rb*Rd)*Re + (Rb*Rc + Rc*Rd + (Rb + Rc + Rd)*Re)*Rf + ((Rb + Rc)*Rd + (Rb + Rc + Rd)*Re + (Rb + Rc + Rd)*Rf)*Rg), -(Rb*Rd + (Rb + Rc + Rd)*Rf)*Rg/(Rb*Rc*Rd + (Rb*Rc + Rb*Rd)*Re + (Rb*Rc + Rc*Rd + (Rb + Rc + Rd)*Re)*Rf + ((Rb + Rc)*Rd + (Rb + Rc + Rd)*Re + (Rb + Rc + Rd)*Rf)*Rg), -(Rc*Rd + (Rb + Rc + Rd)*Re)*Rg/(Rb*Rc*Rd + (Rb*Rc + Rb*Rd)*Re + (Rb*Rc + Rc*Rd + (Rb + Rc + Rd)*Re)*Rf + ((Rb + Rc)*Rd + (Rb + Rc + Rd)*Re + (Rb + Rc + Rd)*Rf)*Rg), (Rb*Rc*Rd + (Rb*Rc + Rb*Rd)*Re + (Rb*Rc + Rc*Rd + (Rb + Rc + Rd)*Re)*Rf)/(Rb*Rc*Rd + (Rb*Rc + Rb*Rd)*Re + (Rb*Rc + Rc*Rd + (Rb + Rc + Rd)*Re)*Rf + ((Rb + Rc)*Rd + (Rb + Rc + Rd)*Re + (Rb + Rc + Rd)*Rf)*Rg)]])\n"," Ra = (Rb*Rc*Rd + (Rb*Rc + Rb*Rd)*Re + (Rb*Rc + Rc*Rd + (Rb + Rc + Rd)*Re)*Rf + ((Rb + Rc)*Rd + (Rb + Rc + Rd)*Re + (Rb + Rc + Rd)*Rf)*Rg)/((Rb + Rc)*Rd + (Rb + Rc + Rd)*Re + (Rb + Rc + Rd)*Rf)\n"," return Ra\n","\n"," def set_bass(self, new_bass):\n"," if self.bass != new_bass:\n"," self.R2.set_resistance(self.R2max * new_bass)\n"," self.bass = new_bass\n","\n"," def set_mid(self, new_mid):\n"," if self.mid != new_mid:\n"," self.R3_plus.set_resistance(self.R1max * (1 - new_mid))\n"," self.R3_minus.set_resistance(self.R1max * new_mid)\n"," self.treble = new_mid\n","\n"," def set_treble(self, new_treble):\n"," if self.treble != new_treble:\n"," self.R1_plus.set_resistance(self.R1max * (1 - new_treble))\n"," self.R1_minus.set_resistance(self.R1max * new_treble)\n"," self.treble = new_treble\n","\n"," def process_sample(self, sample):\n"," self.source.set_voltage(sample)\n"," self.root.accept_incident_wave(self.root.next.propagate_reflected_wave())\n"," self.root.next.accept_incident_wave(self.root.propagate_reflected_wave())\n"," return self.R3_minus.wave_to_voltage() + \\\n"," self.R3_plus.wave_to_voltage() + \\\n"," self.R2.wave_to_voltage() + \\\n"," self.R1_minus.wave_to_voltage()\n",""]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["def plot_response(bass, mid, treble):\n"," for t in treble:\n"," for m in mid:\n"," for b in bass:\n"," bts = BassmanToneStack(48000,b,m,t)\n"," x = bts.get_impulse_response()\n","\n"," worN = 2*np.logspace(1, 4, 512)\n"," w, h = scipy.signal.freqz(x, worN=worN, fs=bts.fs)\n"," magnitude = 20 * np.log10(np.abs(h) + np.finfo(float).eps)\n"," plt.semilogx(w, magnitude)\n","\n"," plt.grid(True)\n"," plt.xlabel('Frequency [Hz]')\n"," plt.ylabel('Magnitude [dB]')\n","\n",""]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["plt.figure()\n","plot_response([0.01, 0.25, 0.5, 0.75, 0.99], [0.5], [0.5])\n","plt.title('Bassman Tone Stack response with varying Bass control')\n",""]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["plt.figure()\n","plot_response([0.5], [0.5], [0.01, 0.25, 0.5, 0.75, 0.99])\n","plt.title('Bassman Tone Stack response with varying Treble control')\n",""]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":[""]}],"nbformat":4,"nbformat_minor":2,"metadata":{"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":3},"orig_nbformat":4}}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment