René's URL Explorer Experiment


Title: Passivity test is ill-conditioned · Issue #761 · python-control/python-control · GitHub

Open Graph Title: Passivity test is ill-conditioned · Issue #761 · python-control/python-control

X Title: Passivity test is ill-conditioned · Issue #761 · python-control/python-control

Description: Whack-a-mole! Now this cvxopt test is flaky passivity_test.py::test_ispassive_edge_cases : https://github.com/python-control/python-control/runs/7930805491?check_suite_focus=true#step:6:3450 Details 2022-08-20T10:05:12.4606678Z =========...

Open Graph Description: Whack-a-mole! Now this cvxopt test is flaky passivity_test.py::test_ispassive_edge_cases : https://github.com/python-control/python-control/runs/7930805491?check_suite_focus=true#step:6:3450 Detail...

X Description: Whack-a-mole! Now this cvxopt test is flaky passivity_test.py::test_ispassive_edge_cases : https://github.com/python-control/python-control/runs/7930805491?check_suite_focus=true#step:6:3450 Detail...

Opengraph URL: https://github.com/python-control/python-control/issues/761

X: @github

direct link

Domain: github.com


Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Passivity test is ill-conditioned","articleBody":"Whack-a-mole! \r\n\r\nNow this cvxopt test is flaky `passivity_test.py::test_ispassive_edge_cases` :\r\n\r\nhttps://github.com/python-control/python-control/runs/7930805491?check_suite_focus=true#step:6:3450\r\n\r\n\u003cdetails\u003e\r\n\r\n```\r\n2022-08-20T10:05:12.4606678Z =================================== FAILURES ===================================\r\n2022-08-20T10:05:12.4607612Z _________________ test_ispassive_edge_cases[test_input2-True] __________________\r\n2022-08-20T10:05:12.4607862Z \r\n2022-08-20T10:05:12.4608255Z test_input = (array([[-3.e+12,  0.e+00],\r\n2022-08-20T10:05:12.4608627Z        [ 0.e+00, -2.e+12]]), array([[0],\r\n2022-08-20T10:05:12.4609085Z        [1]]), array([[-1,  2]]), array([[0.]]))\r\n2022-08-20T10:05:12.4609312Z expected = True\r\n2022-08-20T10:05:12.4609448Z \r\n2022-08-20T10:05:12.4609567Z     @pytest.mark.parametrize(\r\n2022-08-20T10:05:12.4609948Z         \"test_input,expected\",\r\n2022-08-20T10:05:12.4610188Z         [((A, B, C, D*0.0), True),\r\n2022-08-20T10:05:12.4610415Z          ((A_d, B, C, D), True),\r\n2022-08-20T10:05:12.4610640Z          ((A*1e12, B, C, D*0), True),\r\n2022-08-20T10:05:12.4610854Z          ((A, B*0, C*0, D), True),\r\n2022-08-20T10:05:12.4611073Z          ((A*0, B, C, D), True),\r\n2022-08-20T10:05:12.4611293Z          ((A*0, B*0, C*0, D*0), True)])\r\n2022-08-20T10:05:12.4611683Z     def test_ispassive_edge_cases(test_input, expected):\r\n2022-08-20T10:05:12.4611958Z         A = test_input[0]\r\n2022-08-20T10:05:12.4612178Z         B = test_input[1]\r\n2022-08-20T10:05:12.4612610Z         C = test_input[2]\r\n2022-08-20T10:05:12.4612970Z         D = test_input[3]\r\n2022-08-20T10:05:12.4613469Z         sys = ss(A, B, C, D)\r\n2022-08-20T10:05:12.4613753Z \u003e       assert(passivity.ispassive(sys) == expected)\r\n2022-08-20T10:05:12.4613952Z \r\n2022-08-20T10:05:12.4614077Z control/tests/passivity_test.py:115: \r\n2022-08-20T10:05:12.4614373Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n2022-08-20T10:05:12.4614742Z control/passivity.py:292: in ispassive\r\n2022-08-20T10:05:12.4615096Z     return solve_passivity_LMI(sys, rho=ofp_index, nu=ifp_index) is not None\r\n2022-08-20T10:05:12.4615456Z control/passivity.py:177: in solve_passivity_LMI\r\n2022-08-20T10:05:12.4615750Z     sol = cvx.solvers.sdp(c, Gs=Gs, hs=hs)\r\n2022-08-20T10:05:12.4616316Z /usr/share/miniconda3/envs/test-env/lib/python3.10/site-packages/cvxopt/coneprog.py:4126: in sdp\r\n2022-08-20T10:05:12.4616810Z     sol = conelp(c, G, h, dims, A = A, b = b, primalstart = ps, dualstart = ds, kktsolver = kktsolver, options = options)\r\n2022-08-20T10:05:12.4617643Z /usr/share/miniconda3/envs/test-env/lib/python3.10/site-packages/cvxopt/coneprog.py:1395: in conelp\r\n2022-08-20T10:05:12.4618038Z     misc.update_scaling(W, lmbda, ds, dz)\r\n2022-08-20T10:05:12.4618322Z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \r\n2022-08-20T10:05:12.4618485Z \r\n2022-08-20T10:05:12.4618810Z W = {'beta': [], 'd': \u003c0x1 matrix, tc='d'\u003e, 'di': \u003c0x1 matrix, tc='d'\u003e, 'dnl': \u003c0x1 matrix, tc='d'\u003e, ...}\r\n2022-08-20T10:05:12.4619335Z lmbda = \u003c6x1 matrix, tc='d'\u003e, s = \u003c13x1 matrix, tc='d'\u003e\r\n2022-08-20T10:05:12.4619636Z z = \u003c13x1 matrix, tc='d'\u003e\r\n2022-08-20T10:05:12.4619773Z \r\n2022-08-20T10:05:12.4619885Z     def update_scaling(W, lmbda, s, z):\r\n2022-08-20T10:05:12.4620221Z         \"\"\"\r\n2022-08-20T10:05:12.4620607Z         Updates the Nesterov-Todd scaling matrix W and the scaled variable\r\n2022-08-20T10:05:12.4621042Z         lmbda so that on exit\r\n2022-08-20T10:05:12.4621247Z     \r\n2022-08-20T10:05:12.4621547Z               W * zt = W^{-T} * st = lmbda.\r\n2022-08-20T10:05:12.4621773Z     \r\n2022-08-20T10:05:12.4622145Z         On entry, the nonlinear, 'l' and 'q' components of the arguments s\r\n2022-08-20T10:05:12.4622629Z         and z contain W^{-T}*st and W*zt, i.e, the new iterates in the current\r\n2022-08-20T10:05:12.4622920Z         scaling.\r\n2022-08-20T10:05:12.4623119Z     \r\n2022-08-20T10:05:12.4623489Z         The 's' components contain the factors Ls, Lz in a factorization of\r\n2022-08-20T10:05:12.4624030Z         the new iterates in the current scaling, W^{-T}*st = Ls*Ls',\r\n2022-08-20T10:05:12.4624341Z         W*zt = Lz*Lz'.\r\n2022-08-20T10:05:12.4624645Z         \"\"\"\r\n2022-08-20T10:05:12.4624832Z     \r\n2022-08-20T10:05:12.4625008Z     \r\n2022-08-20T10:05:12.4625390Z         # Nonlinear and 'l' blocks\r\n2022-08-20T10:05:12.4625606Z         #\r\n2022-08-20T10:05:12.4626008Z         #    d :=  d .* sqrt( s ./ z )\r\n2022-08-20T10:05:12.4626266Z         #    lmbda := lmbda .* sqrt(s) .* sqrt(z)\r\n2022-08-20T10:05:12.4626501Z     \r\n2022-08-20T10:05:12.4626752Z         if 'dnl' in W:\r\n2022-08-20T10:05:12.4627026Z             mnl = len(W['dnl'])\r\n2022-08-20T10:05:12.4627256Z         else:\r\n2022-08-20T10:05:12.4627460Z             mnl = 0\r\n2022-08-20T10:05:12.4627713Z         ml = len(W['d'])\r\n2022-08-20T10:05:12.4627934Z         m = mnl + ml\r\n2022-08-20T10:05:12.4628165Z         s[:m] = base.sqrt( s[:m] )\r\n2022-08-20T10:05:12.4628397Z         z[:m] = base.sqrt( z[:m] )\r\n2022-08-20T10:05:12.4629372Z     \r\n2022-08-20T10:05:12.4629630Z         # d := d .* s .* z\r\n2022-08-20T10:05:12.4629940Z         if 'dnl' in W:\r\n2022-08-20T10:05:12.4630299Z             blas.tbmv(s, W['dnl'], n = mnl, k = 0, ldA = 1)\r\n2022-08-20T10:05:12.4630693Z             blas.tbsv(z, W['dnl'], n = mnl, k = 0, ldA = 1)\r\n2022-08-20T10:05:12.4631031Z             W['dnli'][:] = W['dnl'][:] ** -1\r\n2022-08-20T10:05:12.4631420Z         blas.tbmv(s, W['d'], n = ml, k = 0, ldA = 1, offsetA = mnl)\r\n2022-08-20T10:05:12.4631840Z         blas.tbsv(z, W['d'], n = ml, k = 0, ldA = 1, offsetA = mnl)\r\n2022-08-20T10:05:12.4632171Z         W['di'][:] = W['d'][:] ** -1\r\n2022-08-20T10:05:12.4632391Z     \r\n2022-08-20T10:05:12.4632808Z         # lmbda := s .* z\r\n2022-08-20T10:05:12.4633059Z         blas.copy(s, lmbda, n = m)\r\n2022-08-20T10:05:12.4633323Z         blas.tbmv(z, lmbda, n = m, k = 0, ldA = 1)\r\n2022-08-20T10:05:12.4633622Z     \r\n2022-08-20T10:05:12.4633806Z     \r\n2022-08-20T10:05:12.4634057Z         # 'q' blocks.\r\n2022-08-20T10:05:12.4634267Z         #\r\n2022-08-20T10:05:12.4634539Z         # Let st and zt be the new variables in the old scaling:\r\n2022-08-20T10:05:12.4634792Z         #\r\n2022-08-20T10:05:12.4635010Z         #     st = s_k,   zt = z_k\r\n2022-08-20T10:05:12.4635228Z         #\r\n2022-08-20T10:05:12.4635560Z         # and a = sqrt(st' * J * st),  b = sqrt(zt' * J * zt).\r\n2022-08-20T10:05:12.4635811Z         #\r\n2022-08-20T10:05:12.4636209Z         # 1. Compute the hyperbolic Householder transformation 2*q*q' - J\r\n2022-08-20T10:05:12.4636519Z         #    that maps st/a to zt/b.\r\n2022-08-20T10:05:12.4636747Z         #\r\n2022-08-20T10:05:12.4637058Z         #        c = sqrt( (1 + st'*zt/(a*b)) / 2 )\r\n2022-08-20T10:05:12.4637420Z         #        q = (st/a + J*zt/b) / (2*c).\r\n2022-08-20T10:05:12.4637667Z         #\r\n2022-08-20T10:05:12.4637894Z         #    The new scaling point is\r\n2022-08-20T10:05:12.4638110Z         #\r\n2022-08-20T10:05:12.4638578Z         #        wk := betak * sqrt(a/b) * (2*v[k]*v[k]' - J) * q\r\n2022-08-20T10:05:12.4638818Z         #\r\n2022-08-20T10:05:12.4639082Z         #    with betak = W['beta'][k].\r\n2022-08-20T10:05:12.4639302Z         #\r\n2022-08-20T10:05:12.4639636Z         # 3. The scaled variable:\r\n2022-08-20T10:05:12.4639831Z         #\r\n2022-08-20T10:05:12.4640044Z         #        lambda_k0 = sqrt(a*b) * c\r\n2022-08-20T10:05:12.4640423Z         #        lambda_k1 = sqrt(a*b) * ( (2vk*vk' - J) * (-d*q + u/2) )_1\r\n2022-08-20T10:05:12.4640655Z         #\r\n2022-08-20T10:05:12.4640839Z         #    where\r\n2022-08-20T10:05:12.4641026Z         #\r\n2022-08-20T10:05:12.4641267Z         #        u = st/a - J*zt/b\r\n2022-08-20T10:05:12.4641620Z         #        d = ( vk0 * (vk'*u) + u0/2 ) / (2*vk0 *(vk'*q) - q0 + 1).\r\n2022-08-20T10:05:12.4641864Z         #\r\n2022-08-20T10:05:12.4642182Z         # 4. Update scaling\r\n2022-08-20T10:05:12.4642379Z         #\r\n2022-08-20T10:05:12.4642577Z         #        v[k] := wk^1/2\r\n2022-08-20T10:05:12.4642824Z         #              = 1 / sqrt(2*(wk0 + 1)) * (wk + e).\r\n2022-08-20T10:05:12.4643060Z         #        beta[k] *=  sqrt(a/b)\r\n2022-08-20T10:05:12.4643271Z     \r\n2022-08-20T10:05:12.4643455Z         ind = m\r\n2022-08-20T10:05:12.4643731Z         for k in range(len(W['v'])):\r\n2022-08-20T10:05:12.4643952Z     \r\n2022-08-20T10:05:12.4644314Z             v = W['v'][k]\r\n2022-08-20T10:05:12.4644524Z             m = len(v)\r\n2022-08-20T10:05:12.4644728Z     \r\n2022-08-20T10:05:12.4645040Z             # ln = sqrt( lambda_k' * J * lambda_k )\r\n2022-08-20T10:05:12.4645428Z             ln = jnrm2(lmbda, n = m, offset = ind)\r\n2022-08-20T10:05:12.4645658Z     \r\n2022-08-20T10:05:12.4645978Z             # a = sqrt( sk' * J * sk ) = sqrt( st' * J * st )\r\n2022-08-20T10:05:12.4646340Z             # s := s / a = st / a\r\n2022-08-20T10:05:12.4646607Z             aa = jnrm2(s, offset = ind, n = m)\r\n2022-08-20T10:05:12.4646898Z             blas.scal(1.0/aa, s, offset = ind, n = m)\r\n2022-08-20T10:05:12.4647123Z     \r\n2022-08-20T10:05:12.4647455Z             # b = sqrt( zk' * J * zk ) = sqrt( zt' * J * zt )\r\n2022-08-20T10:05:12.4647818Z             # z := z / a = zt / b\r\n2022-08-20T10:05:12.4648054Z             bb = jnrm2(z, offset = ind, n = m)\r\n2022-08-20T10:05:12.4648334Z             blas.scal(1.0/bb, z, offset = ind, n = m)\r\n2022-08-20T10:05:12.4648565Z     \r\n2022-08-20T10:05:12.4648857Z             # c = sqrt( ( 1 + (st'*zt) / (a*b) ) / 2 )\r\n2022-08-20T10:05:12.4649290Z             cc = math.sqrt( ( 1.0 + blas.dot(s, z, offsetx = ind, offsety =\r\n2022-08-20T10:05:12.4649582Z                 ind, n = m) ) / 2.0 )\r\n2022-08-20T10:05:12.4649796Z     \r\n2022-08-20T10:05:12.4650041Z             # vs = v' * st / a\r\n2022-08-20T10:05:12.4650311Z             vs = blas.dot(v, s, offsety = ind, n = m)\r\n2022-08-20T10:05:12.4650549Z     \r\n2022-08-20T10:05:12.4651253Z             # vz = v' * J *zt / b\r\n2022-08-20T10:05:12.4651724Z             vz = jdot(v, z, offsety = ind, n = m)\r\n2022-08-20T10:05:12.4651960Z     \r\n2022-08-20T10:05:12.4652334Z             # vq = v' * q where q = (st/a + J * zt/b) / (2 * c)\r\n2022-08-20T10:05:12.4652810Z             vq = (vs + vz ) / 2.0 / cc\r\n2022-08-20T10:05:12.4653032Z     \r\n2022-08-20T10:05:12.4653355Z             # vu = v' * u  where u =  st/a - J * zt/b\r\n2022-08-20T10:05:12.4653655Z             vu = vs - vz\r\n2022-08-20T10:05:12.4653865Z     \r\n2022-08-20T10:05:12.4654053Z             # lambda_k0 = c\r\n2022-08-20T10:05:12.4654285Z             lmbda[ind] = cc\r\n2022-08-20T10:05:12.4654602Z     \r\n2022-08-20T10:05:12.4654873Z             # wk0 = 2 * vk0 * (vk' * q) - q0\r\n2022-08-20T10:05:12.4655466Z             wk0 = 2 * v[0] * vq - ( s[ind] + z[ind] ) / 2.0 / cc\r\n2022-08-20T10:05:12.4655699Z     \r\n2022-08-20T10:05:12.4655989Z             # d = (v[0] * (vk' * u) - u0/2) / (wk0 + 1)\r\n2022-08-20T10:05:12.4656492Z             dd = (v[0] * vu - s[ind]/2.0 + z[ind]/2.0) / (wk0 + 1.0)\r\n2022-08-20T10:05:12.4656755Z     \r\n2022-08-20T10:05:12.4657096Z             # lambda_k1 = 2 * v_k1 * vk' * (-d*q + u/2) - d*q1 + u1/2\r\n2022-08-20T10:05:12.4657651Z             blas.copy(v, lmbda, offsetx = 1, offsety = ind+1, n = m-1)\r\n2022-08-20T10:05:12.4658095Z             blas.scal(2.0 * (-dd * vq + 0.5 * vu), lmbda, offset = ind+1,\r\n2022-08-20T10:05:12.4658422Z                n = m-1)\r\n2022-08-20T10:05:12.4658904Z             blas.axpy(s, lmbda, 0.5 * (1.0 - dd/cc), offsetx = ind+1, offsety\r\n2022-08-20T10:05:12.4659242Z                = ind+1, n = m-1)\r\n2022-08-20T10:05:12.4659529Z             blas.axpy(z, lmbda, 0.5 * (1.0 + dd/cc), offsetx = ind+1, offsety\r\n2022-08-20T10:05:12.4659850Z                = ind+1, n = m-1)\r\n2022-08-20T10:05:12.4660056Z     \r\n2022-08-20T10:05:12.4660408Z             # Scale so that sqrt(lambda_k' * J * lambda_k) = sqrt(aa*bb).\r\n2022-08-20T10:05:12.4660855Z             blas.scal(math.sqrt(aa*bb), lmbda, offset = ind, n = m)\r\n2022-08-20T10:05:12.4661118Z     \r\n2022-08-20T10:05:12.4661396Z             # v := (2*v*v' - J) * q\r\n2022-08-20T10:05:12.4661843Z             #    = 2 * (v'*q) * v' - (J* st/a + zt/b) / (2*c)\r\n2022-08-20T10:05:12.4662220Z             blas.scal(2.0 * vq, v)\r\n2022-08-20T10:05:12.4662532Z             v[0] -= s[ind] / 2.0 / cc\r\n2022-08-20T10:05:12.4662939Z             blas.axpy(s, v,  0.5/cc, offsetx = ind+1, offsety = 1, n = m-1)\r\n2022-08-20T10:05:12.4663341Z             blas.axpy(z, v, -0.5/cc, offsetx = ind, n = m)\r\n2022-08-20T10:05:12.4663589Z     \r\n2022-08-20T10:05:12.4663824Z             # v := v^{1/2} = 1/sqrt(2 * (v0 + 1)) * (v + e)\r\n2022-08-20T10:05:12.4664050Z             v[0] += 1.0\r\n2022-08-20T10:05:12.4664310Z             blas.scal(1.0 / math.sqrt(2.0 * v[0]), v)\r\n2022-08-20T10:05:12.4664548Z     \r\n2022-08-20T10:05:12.4664751Z             # beta[k] *= ( aa / bb )**1/2\r\n2022-08-20T10:05:12.4665097Z             W['beta'][k] *= math.sqrt( aa / bb )\r\n2022-08-20T10:05:12.4665331Z     \r\n2022-08-20T10:05:12.4665510Z             ind += m\r\n2022-08-20T10:05:12.4665708Z     \r\n2022-08-20T10:05:12.4665895Z     \r\n2022-08-20T10:05:12.4666158Z         # 's' blocks\r\n2022-08-20T10:05:12.4666360Z         #\r\n2022-08-20T10:05:12.4666633Z         # Let st, zt be the updated variables in the old scaling:\r\n2022-08-20T10:05:12.4666886Z         #\r\n2022-08-20T10:05:12.4667184Z         #     st = Ls * Ls', zt = Lz * Lz'.\r\n2022-08-20T10:05:12.4667411Z         #\r\n2022-08-20T10:05:12.4667735Z         # where Ls and Lz are the 's' components of s, z.\r\n2022-08-20T10:05:12.4667992Z         #\r\n2022-08-20T10:05:12.4668302Z         # 1.  SVD Lz'*Ls = Uk * lambda_k^+ * Vk'.\r\n2022-08-20T10:05:12.4668526Z         #\r\n2022-08-20T10:05:12.4668739Z         # 2.  New scaling is\r\n2022-08-20T10:05:12.4668957Z         #\r\n2022-08-20T10:05:12.4669289Z         #         r[k] := r[k] * Ls * Vk * diag(lambda_k^+)^{-1/2}\r\n2022-08-20T10:05:12.4669698Z         #         rti[k] := r[k] * Lz * Uk * diag(lambda_k^+)^{-1/2}.\r\n2022-08-20T10:05:12.4669951Z         #\r\n2022-08-20T10:05:12.4670124Z     \r\n2022-08-20T10:05:12.4670493Z         work = matrix(0.0, (max( [0] + [r.size[0] for r in W['r']])**2, 1))\r\n2022-08-20T10:05:12.4671033Z         ind = mnl + ml + sum([ len(v) for v in W['v'] ])\r\n2022-08-20T10:05:12.4671299Z         ind2, ind3 = ind, 0\r\n2022-08-20T10:05:12.4671594Z         for k in range(len(W['r'])):\r\n2022-08-20T10:05:12.4671924Z             r, rti = W['r'][k], W['rti'][k]\r\n2022-08-20T10:05:12.4672164Z             m = r.size[0]\r\n2022-08-20T10:05:12.4672356Z     \r\n2022-08-20T10:05:12.4672564Z             # r := r*sk = r*Ls\r\n2022-08-20T10:05:12.4672858Z             blas.gemm(r, s, work, m = m, n = m, k = m, ldB = m, ldC = m,\r\n2022-08-20T10:05:12.4673126Z                 offsetB = ind2)\r\n2022-08-20T10:05:12.4673545Z             blas.copy(work, r, n = m**2)\r\n2022-08-20T10:05:12.4673885Z     \r\n2022-08-20T10:05:12.4674070Z             # rti := rti*zk = rti*Lz\r\n2022-08-20T10:05:12.4674352Z             blas.gemm(rti, z, work, m = m, n = m, k = m, ldB = m, ldC = m,\r\n2022-08-20T10:05:12.4674620Z                 offsetB = ind2)\r\n2022-08-20T10:05:12.4674939Z             blas.copy(work, rti, n = m**2)\r\n2022-08-20T10:05:12.4675176Z     \r\n2022-08-20T10:05:12.4696294Z             # SVD Lz'*Ls = U * lmbds^+ * V'; store U in sk and V' in zk.\r\n2022-08-20T10:05:12.4696880Z             blas.gemm(z, s, work, transA = 'T', m = m, n = m, k = m, ldA = m,\r\n2022-08-20T10:05:12.4697207Z                 ldB = m, ldC = m, offsetA = ind2, offsetB = ind2)\r\n2022-08-20T10:05:12.4697652Z             lapack.gesvd(work, lmbda, jobu = 'A', jobvt = 'A', m = m, n = m,\r\n2022-08-20T10:05:12.4698006Z                 ldA = m, U = s, Vt = z, ldU = m, ldVt = m, offsetS = ind,\r\n2022-08-20T10:05:12.4698319Z                 offsetU = ind2, offsetVt = ind2)\r\n2022-08-20T10:05:12.4698543Z     \r\n2022-08-20T10:05:12.4698741Z             # r := r*V\r\n2022-08-20T10:05:12.4699127Z             blas.gemm(r, z, work, transB = 'T', m = m, n = m, k = m, ldB = m,\r\n2022-08-20T10:05:12.4699410Z                 ldC = m, offsetB = ind2)\r\n2022-08-20T10:05:12.4699675Z             blas.copy(work, r, n = m**2)\r\n2022-08-20T10:05:12.4700021Z     \r\n2022-08-20T10:05:12.4700204Z             # rti := rti*U\r\n2022-08-20T10:05:12.4700602Z             blas.gemm(rti, s, work, n = m, m = m, k = m, ldB = m, ldC = m,\r\n2022-08-20T10:05:12.4700867Z                 offsetB = ind2)\r\n2022-08-20T10:05:12.4701098Z             blas.copy(work, rti, n = m**2)\r\n2022-08-20T10:05:12.4701318Z     \r\n2022-08-20T10:05:12.4701645Z             # r := r*lambda^{-1/2}; rti := rti*lambda^{-1/2}\r\n2022-08-20T10:05:12.4702010Z             for i in range(m):\r\n2022-08-20T10:05:12.4702263Z \u003e               a = 1.0 / math.sqrt(lmbda[ind+i])\r\n2022-08-20T10:05:12.4702566Z E               ZeroDivisionError: float division by zero\r\n2022-08-20T10:05:12.4702754Z \r\n2022-08-20T10:05:12.4703110Z /usr/share/miniconda3/envs/test-env/lib/python3.10/site-packages/cvxopt/misc.py:628: ZeroDivisionError\r\n```\r\n\r\n\u003c/details\u003e\r\n\r\n_Originally posted by @bnavigator in https://github.com/python-control/python-control/issues/759#issuecomment-1221272177_","author":{"url":"https://github.com/bnavigator","@type":"Person","name":"bnavigator"},"datePublished":"2022-08-20T10:10:38.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":10},"url":"https://github.com/761/python-control/issues/761"}

route-pattern/_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format)
route-controllervoltron_issues_fragments
route-actionissue_layout
fetch-noncev2:232cf273-d323-ec84-f789-ef516c186ff8
current-catalog-service-hash81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114
request-id9CA0:163852:3603527:49E6252:6979D510
html-safe-nonce38fc98669c3afca708cbc7478d992446a9660fb592bdfe544a8f12d903300017
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5Q0EwOjE2Mzg1MjozNjAzNTI3OjQ5RTYyNTI6Njk3OUQ1MTAiLCJ2aXNpdG9yX2lkIjoiMjMxNzM5MTI0NjAzNDMyNjgwMCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmac8a60b4a01db754956249e4d9b353a845d6fc6344d2330b24a749239352ac942c
hovercard-subject-tagissue:1345114788
github-keyboard-shortcutsrepository,issues,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///voltron/issues_fragments/issue_layout
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/python-control/python-control/761/issue_layout
twitter:imagehttps://opengraph.githubassets.com/2ae0a6be799773ef4476c4e7000bc9e2e9867001aa6aa3d6d6282341a2e16de4/python-control/python-control/issues/761
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/2ae0a6be799773ef4476c4e7000bc9e2e9867001aa6aa3d6d6282341a2e16de4/python-control/python-control/issues/761
og:image:altWhack-a-mole! Now this cvxopt test is flaky passivity_test.py::test_ispassive_edge_cases : https://github.com/python-control/python-control/runs/7930805491?check_suite_focus=true#step:6:3450 Detail...
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
og:author:usernamebnavigator
hostnamegithub.com
expected-hostnamegithub.com
Nonec049b65ec7e54cbf2521f5a560b6527714c612b0bd169188e2ea6e16f83bd5f4
turbo-cache-controlno-preview
go-importgithub.com/python-control/python-control git https://github.com/python-control/python-control.git
octolytics-dimension-user_id2285872
octolytics-dimension-user_loginpython-control
octolytics-dimension-repository_id22791752
octolytics-dimension-repository_nwopython-control/python-control
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id22791752
octolytics-dimension-repository_network_root_nwopython-control/python-control
turbo-body-classeslogged-out env-production page-responsive
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release87b137883e35e2766c3d0f6a257c4044f6390b83
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/python-control/python-control/issues/761#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpython-control%2Fpython-control%2Fissues%2F761
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub SparkBuild and deploy intelligent appshttps://github.com/features/spark
GitHub ModelsManage and compare promptshttps://github.com/features/models
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpython-control%2Fpython-control%2Fissues%2F761
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fissues_fragments%2Fissue_layout&source=header-repo&source_repo=python-control%2Fpython-control
Reloadhttps://github.com/python-control/python-control/issues/761
Reloadhttps://github.com/python-control/python-control/issues/761
Reloadhttps://github.com/python-control/python-control/issues/761
python-control https://github.com/python-control
python-controlhttps://github.com/python-control/python-control
Notifications https://github.com/login?return_to=%2Fpython-control%2Fpython-control
Fork 447 https://github.com/login?return_to=%2Fpython-control%2Fpython-control
Star 2k https://github.com/login?return_to=%2Fpython-control%2Fpython-control
Code https://github.com/python-control/python-control
Issues 87 https://github.com/python-control/python-control/issues
Pull requests 8 https://github.com/python-control/python-control/pulls
Discussions https://github.com/python-control/python-control/discussions
Actions https://github.com/python-control/python-control/actions
Projects 0 https://github.com/python-control/python-control/projects
Wiki https://github.com/python-control/python-control/wiki
Security 0 https://github.com/python-control/python-control/security
Insights https://github.com/python-control/python-control/pulse
Code https://github.com/python-control/python-control
Issues https://github.com/python-control/python-control/issues
Pull requests https://github.com/python-control/python-control/pulls
Discussions https://github.com/python-control/python-control/discussions
Actions https://github.com/python-control/python-control/actions
Projects https://github.com/python-control/python-control/projects
Wiki https://github.com/python-control/python-control/wiki
Security https://github.com/python-control/python-control/security
Insights https://github.com/python-control/python-control/pulse
New issuehttps://github.com/login?return_to=https://github.com/python-control/python-control/issues/761
New issuehttps://github.com/login?return_to=https://github.com/python-control/python-control/issues/761
#814https://github.com/python-control/python-control/pull/814
Passivity test is ill-conditionedhttps://github.com/python-control/python-control/issues/761#top
#814https://github.com/python-control/python-control/pull/814
https://github.com/bnavigator
https://github.com/bnavigator
bnavigatorhttps://github.com/bnavigator
on Aug 20, 2022https://github.com/python-control/python-control/issues/761#issue-1345114788
https://github.com/python-control/python-control/runs/7930805491?check_suite_focus=true#step:6:3450https://github.com/python-control/python-control/runs/7930805491?check_suite_focus=true#step:6:3450
@bnavigatorhttps://github.com/bnavigator
#759 (comment)https://github.com/python-control/python-control/pull/759#issuecomment-1221272177
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.