pyerrors/docs/pyerrors/special.html
2024-06-19 10:56:18 +00:00

3956 lines
No EOL
367 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="generator" content="pdoc 14.5.0"/>
<title>pyerrors.special API documentation</title>
<style>/*! * Bootstrap Reboot v5.0.0 (https://getbootstrap.com/) * Copyright 2011-2021 The Bootstrap Authors * Copyright 2011-2021 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) */*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){h1{font-size:2.5rem}}h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){h2{font-size:2rem}}h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){h3{font-size:1.75rem}}h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){h4{font-size:1.5rem}}h5{font-size:1.25rem}h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:.875em}mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}</style>
<style>/*! syntax-highlighting.css */pre{line-height:125%;}span.linenos{color:inherit; background-color:transparent; padding-left:5px; padding-right:20px;}.pdoc-code .hll{background-color:#ffffcc}.pdoc-code{background:#f8f8f8;}.pdoc-code .c{color:#3D7B7B; font-style:italic}.pdoc-code .err{border:1px solid #FF0000}.pdoc-code .k{color:#008000; font-weight:bold}.pdoc-code .o{color:#666666}.pdoc-code .ch{color:#3D7B7B; font-style:italic}.pdoc-code .cm{color:#3D7B7B; font-style:italic}.pdoc-code .cp{color:#9C6500}.pdoc-code .cpf{color:#3D7B7B; font-style:italic}.pdoc-code .c1{color:#3D7B7B; font-style:italic}.pdoc-code .cs{color:#3D7B7B; font-style:italic}.pdoc-code .gd{color:#A00000}.pdoc-code .ge{font-style:italic}.pdoc-code .gr{color:#E40000}.pdoc-code .gh{color:#000080; font-weight:bold}.pdoc-code .gi{color:#008400}.pdoc-code .go{color:#717171}.pdoc-code .gp{color:#000080; font-weight:bold}.pdoc-code .gs{font-weight:bold}.pdoc-code .gu{color:#800080; font-weight:bold}.pdoc-code .gt{color:#0044DD}.pdoc-code .kc{color:#008000; font-weight:bold}.pdoc-code .kd{color:#008000; font-weight:bold}.pdoc-code .kn{color:#008000; font-weight:bold}.pdoc-code .kp{color:#008000}.pdoc-code .kr{color:#008000; font-weight:bold}.pdoc-code .kt{color:#B00040}.pdoc-code .m{color:#666666}.pdoc-code .s{color:#BA2121}.pdoc-code .na{color:#687822}.pdoc-code .nb{color:#008000}.pdoc-code .nc{color:#0000FF; font-weight:bold}.pdoc-code .no{color:#880000}.pdoc-code .nd{color:#AA22FF}.pdoc-code .ni{color:#717171; font-weight:bold}.pdoc-code .ne{color:#CB3F38; font-weight:bold}.pdoc-code .nf{color:#0000FF}.pdoc-code .nl{color:#767600}.pdoc-code .nn{color:#0000FF; font-weight:bold}.pdoc-code .nt{color:#008000; font-weight:bold}.pdoc-code .nv{color:#19177C}.pdoc-code .ow{color:#AA22FF; font-weight:bold}.pdoc-code .w{color:#bbbbbb}.pdoc-code .mb{color:#666666}.pdoc-code .mf{color:#666666}.pdoc-code .mh{color:#666666}.pdoc-code .mi{color:#666666}.pdoc-code .mo{color:#666666}.pdoc-code .sa{color:#BA2121}.pdoc-code .sb{color:#BA2121}.pdoc-code .sc{color:#BA2121}.pdoc-code .dl{color:#BA2121}.pdoc-code .sd{color:#BA2121; font-style:italic}.pdoc-code .s2{color:#BA2121}.pdoc-code .se{color:#AA5D1F; font-weight:bold}.pdoc-code .sh{color:#BA2121}.pdoc-code .si{color:#A45A77; font-weight:bold}.pdoc-code .sx{color:#008000}.pdoc-code .sr{color:#A45A77}.pdoc-code .s1{color:#BA2121}.pdoc-code .ss{color:#19177C}.pdoc-code .bp{color:#008000}.pdoc-code .fm{color:#0000FF}.pdoc-code .vc{color:#19177C}.pdoc-code .vg{color:#19177C}.pdoc-code .vi{color:#19177C}.pdoc-code .vm{color:#19177C}.pdoc-code .il{color:#666666}</style>
<style>/*! theme.css */:root{--pdoc-background:#fff;}.pdoc{--text:#212529;--muted:#6c757d;--link:#3660a5;--link-hover:#1659c5;--code:#f8f8f8;--active:#fff598;--accent:#eee;--accent2:#c1c1c1;--nav-hover:rgba(255, 255, 255, 0.5);--name:#0066BB;--def:#008800;--annotation:#007020;}</style>
<style>/*! layout.css */html, body{width:100%;height:100%;}html, main{scroll-behavior:smooth;}body{background-color:var(--pdoc-background);}@media (max-width:769px){#navtoggle{cursor:pointer;position:absolute;width:50px;height:40px;top:1rem;right:1rem;border-color:var(--text);color:var(--text);display:flex;opacity:0.8;z-index:999;}#navtoggle:hover{opacity:1;}#togglestate + div{display:none;}#togglestate:checked + div{display:inherit;}main, header{padding:2rem 3vw;}header + main{margin-top:-3rem;}.git-button{display:none !important;}nav input[type="search"]{max-width:77%;}nav input[type="search"]:first-child{margin-top:-6px;}nav input[type="search"]:valid ~ *{display:none !important;}}@media (min-width:770px){:root{--sidebar-width:clamp(12.5rem, 28vw, 22rem);}nav{position:fixed;overflow:auto;height:100vh;width:var(--sidebar-width);}main, header{padding:3rem 2rem 3rem calc(var(--sidebar-width) + 3rem);width:calc(54rem + var(--sidebar-width));max-width:100%;}header + main{margin-top:-4rem;}#navtoggle{display:none;}}#togglestate{position:absolute;height:0;opacity:0;}nav.pdoc{--pad:clamp(0.5rem, 2vw, 1.75rem);--indent:1.5rem;background-color:var(--accent);border-right:1px solid var(--accent2);box-shadow:0 0 20px rgba(50, 50, 50, .2) inset;padding:0 0 0 var(--pad);overflow-wrap:anywhere;scrollbar-width:thin; scrollbar-color:var(--accent2) transparent; z-index:1}nav.pdoc::-webkit-scrollbar{width:.4rem; }nav.pdoc::-webkit-scrollbar-thumb{background-color:var(--accent2); }nav.pdoc > div{padding:var(--pad) 0;}nav.pdoc .module-list-button{display:inline-flex;align-items:center;color:var(--text);border-color:var(--muted);margin-bottom:1rem;}nav.pdoc .module-list-button:hover{border-color:var(--text);}nav.pdoc input[type=search]{display:block;outline-offset:0;width:calc(100% - var(--pad));}nav.pdoc .logo{max-width:calc(100% - var(--pad));max-height:35vh;display:block;margin:0 auto 1rem;transform:translate(calc(-.5 * var(--pad)), 0);}nav.pdoc ul{list-style:none;padding-left:0;}nav.pdoc > div > ul{margin-left:calc(0px - var(--pad));}nav.pdoc li a{padding:.2rem 0 .2rem calc(var(--pad) + var(--indent));}nav.pdoc > div > ul > li > a{padding-left:var(--pad);}nav.pdoc li{transition:all 100ms;}nav.pdoc li:hover{background-color:var(--nav-hover);}nav.pdoc a, nav.pdoc a:hover{color:var(--text);}nav.pdoc a{display:block;}nav.pdoc > h2:first-of-type{margin-top:1.5rem;}nav.pdoc .class:before{content:"class ";color:var(--muted);}nav.pdoc .function:after{content:"()";color:var(--muted);}nav.pdoc footer:before{content:"";display:block;width:calc(100% - var(--pad));border-top:solid var(--accent2) 1px;margin-top:1.5rem;padding-top:.5rem;}nav.pdoc footer{font-size:small;}</style>
<style>/*! content.css */.pdoc{color:var(--text);box-sizing:border-box;line-height:1.5;background:none;}.pdoc .pdoc-button{cursor:pointer;display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .pdoc-alert-note {color:#084298;background-color:#cfe2ff;border-color:#b6d4fe;background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22%23084298%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20d%3D%22M8%2016A8%208%200%201%200%208%200a8%208%200%200%200%200%2016zm.93-9.412-1%204.705c-.07.34.029.533.304.533.194%200%20.487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703%200-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381%202.29-.287zM8%205.5a1%201%200%201%201%200-2%201%201%200%200%201%200%202z%22/%3E%3C/svg%3E");}.pdoc .pdoc-alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5;background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22%23664d03%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20d%3D%22M8.982%201.566a1.13%201.13%200%200%200-1.96%200L.165%2013.233c-.457.778.091%201.767.98%201.767h13.713c.889%200%201.438-.99.98-1.767L8.982%201.566zM8%205c.535%200%20.954.462.9.995l-.35%203.507a.552.552%200%200%201-1.1%200L7.1%205.995A.905.905%200%200%201%208%205zm.002%206a1%201%200%201%201%200%202%201%201%200%200%201%200-2z%22/%3E%3C/svg%3E");}.pdoc .pdoc-alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7;background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22%23842029%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20d%3D%22M5.52.359A.5.5%200%200%201%206%200h4a.5.5%200%200%201%20.474.658L8.694%206H12.5a.5.5%200%200%201%20.395.807l-7%209a.5.5%200%200%201-.873-.454L6.823%209.5H3.5a.5.5%200%200%201-.48-.641l2.5-8.5z%22/%3E%3C/svg%3E");}.pdoc .visually-hidden{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important;}.pdoc h1, .pdoc h2, .pdoc h3{font-weight:300;margin:.3em 0;padding:.2em 0;}.pdoc > section:not(.module-info) h1{font-size:1.5rem;font-weight:500;}.pdoc > section:not(.module-info) h2{font-size:1.4rem;font-weight:500;}.pdoc > section:not(.module-info) h3{font-size:1.3rem;font-weight:500;}.pdoc > section:not(.module-info) h4{font-size:1.2rem;}.pdoc > section:not(.module-info) h5{font-size:1.1rem;}.pdoc a{text-decoration:none;color:var(--link);}.pdoc a:hover{color:var(--link-hover);}.pdoc blockquote{margin-left:2rem;}.pdoc pre{border-top:1px solid var(--accent2);border-bottom:1px solid var(--accent2);margin-top:0;margin-bottom:1em;padding:.5rem 0 .5rem .5rem;overflow-x:auto;background-color:var(--code);}.pdoc code{color:var(--text);padding:.2em .4em;margin:0;font-size:85%;background-color:var(--accent);border-radius:6px;}.pdoc a > code{color:inherit;}.pdoc pre > code{display:inline-block;font-size:inherit;background:none;border:none;padding:0;}.pdoc > section:not(.module-info){margin-bottom:1.5rem;}.pdoc .modulename{margin-top:0;font-weight:bold;}.pdoc .modulename a{color:var(--link);transition:100ms all;}.pdoc .git-button{float:right;border:solid var(--link) 1px;}.pdoc .git-button:hover{background-color:var(--link);color:var(--pdoc-background);}.view-source-toggle-state,.view-source-toggle-state ~ .pdoc-code{display:none;}.view-source-toggle-state:checked ~ .pdoc-code{display:block;}.view-source-button{display:inline-block;float:right;font-size:.75rem;line-height:1.5rem;color:var(--muted);padding:0 .4rem 0 1.3rem;cursor:pointer;text-indent:-2px;}.view-source-button > span{visibility:hidden;}.module-info .view-source-button{float:none;display:flex;justify-content:flex-end;margin:-1.2rem .4rem -.2rem 0;}.view-source-button::before{position:absolute;content:"View Source";display:list-item;list-style-type:disclosure-closed;}.view-source-toggle-state:checked ~ .attr .view-source-button::before,.view-source-toggle-state:checked ~ .view-source-button::before{list-style-type:disclosure-open;}.pdoc .docstring{margin-bottom:1.5rem;}.pdoc section:not(.module-info) .docstring{margin-left:clamp(0rem, 5vw - 2rem, 1rem);}.pdoc .docstring .pdoc-code{margin-left:1em;margin-right:1em;}.pdoc h1:target,.pdoc h2:target,.pdoc h3:target,.pdoc h4:target,.pdoc h5:target,.pdoc h6:target,.pdoc .pdoc-code > pre > span:target{background-color:var(--active);box-shadow:-1rem 0 0 0 var(--active);}.pdoc .pdoc-code > pre > span:target{display:block;}.pdoc div:target > .attr,.pdoc section:target > .attr,.pdoc dd:target > a{background-color:var(--active);}.pdoc *{scroll-margin:2rem;}.pdoc .pdoc-code .linenos{user-select:none;}.pdoc .attr:hover{filter:contrast(0.95);}.pdoc section, .pdoc .classattr{position:relative;}.pdoc .headerlink{--width:clamp(1rem, 3vw, 2rem);position:absolute;top:0;left:calc(0rem - var(--width));transition:all 100ms ease-in-out;opacity:0;}.pdoc .headerlink::before{content:"#";display:block;text-align:center;width:var(--width);height:2.3rem;line-height:2.3rem;font-size:1.5rem;}.pdoc .attr:hover ~ .headerlink,.pdoc *:target > .headerlink,.pdoc .headerlink:hover{opacity:1;}.pdoc .attr{display:block;margin:.5rem 0 .5rem;padding:.4rem .4rem .4rem 1rem;background-color:var(--accent);overflow-x:auto;}.pdoc .classattr{margin-left:2rem;}.pdoc .name{color:var(--name);font-weight:bold;}.pdoc .def{color:var(--def);font-weight:bold;}.pdoc .signature{background-color:transparent;}.pdoc .param, .pdoc .return-annotation{white-space:pre;}.pdoc .signature.multiline .param{display:block;}.pdoc .signature.condensed .param{display:inline-block;}.pdoc .annotation{color:var(--annotation);}.pdoc .view-value-toggle-state,.pdoc .view-value-toggle-state ~ .default_value{display:none;}.pdoc .view-value-toggle-state:checked ~ .default_value{display:inherit;}.pdoc .view-value-button{font-size:.5rem;vertical-align:middle;border-style:dashed;margin-top:-0.1rem;}.pdoc .view-value-button:hover{background:white;}.pdoc .view-value-button::before{content:"show";text-align:center;width:2.2em;display:inline-block;}.pdoc .view-value-toggle-state:checked ~ .view-value-button::before{content:"hide";}.pdoc .inherited{margin-left:2rem;}.pdoc .inherited dt{font-weight:700;}.pdoc .inherited dt, .pdoc .inherited dd{display:inline;margin-left:0;margin-bottom:.5rem;}.pdoc .inherited dd:not(:last-child):after{content:", ";}.pdoc .inherited .class:before{content:"class ";}.pdoc .inherited .function a:after{content:"()";}.pdoc .search-result .docstring{overflow:auto;max-height:25vh;}.pdoc .search-result.focused > .attr{background-color:var(--active);}.pdoc .attribution{margin-top:2rem;display:block;opacity:0.5;transition:all 200ms;filter:grayscale(100%);}.pdoc .attribution:hover{opacity:1;filter:grayscale(0%);}.pdoc .attribution img{margin-left:5px;height:35px;vertical-align:middle;width:70px;transition:all 200ms;}.pdoc table{display:block;width:max-content;max-width:100%;overflow:auto;margin-bottom:1rem;}.pdoc table th{font-weight:600;}.pdoc table th, .pdoc table td{padding:6px 13px;border:1px solid var(--accent2);}</style>
<style>/*! custom.css */</style><script>
window.MathJax = {
tex: {
inlineMath: [['$', '$'], ['\\(', '\\)']]
}
};
</script>
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
<script>
/* Re-invoke MathJax when DOM content changes, for example during search. */
document.addEventListener("DOMContentLoaded", () => {
new MutationObserver(() => MathJax.typeset()).observe(
document.querySelector("main.pdoc").parentNode,
{childList: true}
);
})
</script>
<style>
mjx-container {
overflow-x: auto;
overflow-y: hidden;
}
</style></head>
<body>
<nav class="pdoc">
<label id="navtoggle" for="togglestate" class="pdoc-button"><svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke-linecap='round' stroke="currentColor" stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg></label>
<input id="togglestate" type="checkbox" aria-hidden="true" tabindex="-1">
<div> <a class="pdoc-button module-list-button" href="../pyerrors.html">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-arrow-in-left" viewBox="0 0 16 16">
<path fill-rule="evenodd" d="M10 3.5a.5.5 0 0 0-.5-.5h-8a.5.5 0 0 0-.5.5v9a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 1 1 0v2A1.5 1.5 0 0 1 9.5 14h-8A1.5 1.5 0 0 1 0 12.5v-9A1.5 1.5 0 0 1 1.5 2h8A1.5 1.5 0 0 1 11 3.5v2a.5.5 0 0 1-1 0v-2z"/>
<path fill-rule="evenodd" d="M4.146 8.354a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L5.707 7.5H14.5a.5.5 0 0 1 0 1H5.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3z"/>
</svg> &nbsp;pyerrors</a>
<input type="search" placeholder="Search..." role="searchbox" aria-label="search"
pattern=".+" required>
<h2>API Documentation</h2>
<ul class="memberlist">
<li>
<a class="function" href="#beta">beta</a>
</li>
<li>
<a class="function" href="#betainc">betainc</a>
</li>
<li>
<a class="function" href="#betaln">betaln</a>
</li>
<li>
<a class="function" href="#polygamma">polygamma</a>
</li>
<li>
<a class="function" href="#psi">psi</a>
</li>
<li>
<a class="function" href="#digamma">digamma</a>
</li>
<li>
<a class="function" href="#gamma">gamma</a>
</li>
<li>
<a class="function" href="#gammaln">gammaln</a>
</li>
<li>
<a class="function" href="#gammainc">gammainc</a>
</li>
<li>
<a class="function" href="#gammaincc">gammaincc</a>
</li>
<li>
<a class="function" href="#gammasgn">gammasgn</a>
</li>
<li>
<a class="function" href="#rgamma">rgamma</a>
</li>
<li>
<a class="function" href="#multigammaln">multigammaln</a>
</li>
<li>
<a class="function" href="#kn">kn</a>
</li>
<li>
<a class="function" href="#j0">j0</a>
</li>
<li>
<a class="function" href="#y0">y0</a>
</li>
<li>
<a class="function" href="#j1">j1</a>
</li>
<li>
<a class="function" href="#y1">y1</a>
</li>
<li>
<a class="function" href="#jn">jn</a>
</li>
<li>
<a class="function" href="#yn">yn</a>
</li>
<li>
<a class="function" href="#i0">i0</a>
</li>
<li>
<a class="function" href="#i1">i1</a>
</li>
<li>
<a class="function" href="#iv">iv</a>
</li>
<li>
<a class="function" href="#ive">ive</a>
</li>
<li>
<a class="function" href="#erf">erf</a>
</li>
<li>
<a class="function" href="#erfc">erfc</a>
</li>
<li>
<a class="function" href="#erfinv">erfinv</a>
</li>
<li>
<a class="function" href="#erfcinv">erfcinv</a>
</li>
<li>
<a class="function" href="#logit">logit</a>
</li>
<li>
<a class="function" href="#expit">expit</a>
</li>
<li>
<a class="function" href="#logsumexp">logsumexp</a>
</li>
</ul>
<a class="attribution" title="pdoc: Python API documentation generator" href="https://pdoc.dev" target="_blank">
built with <span class="visually-hidden">pdoc</span><img
alt="pdoc logo"
src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20role%3D%22img%22%20aria-label%3D%22pdoc%20logo%22%20width%3D%22300%22%20height%3D%22150%22%20viewBox%3D%22-1%200%2060%2030%22%3E%3Ctitle%3Epdoc%3C/title%3E%3Cpath%20d%3D%22M29.621%2021.293c-.011-.273-.214-.475-.511-.481a.5.5%200%200%200-.489.503l-.044%201.393c-.097.551-.695%201.215-1.566%201.704-.577.428-1.306.486-2.193.182-1.426-.617-2.467-1.654-3.304-2.487l-.173-.172a3.43%203.43%200%200%200-.365-.306.49.49%200%200%200-.286-.196c-1.718-1.06-4.931-1.47-7.353.191l-.219.15c-1.707%201.187-3.413%202.131-4.328%201.03-.02-.027-.49-.685-.141-1.763.233-.721.546-2.408.772-4.076.042-.09.067-.187.046-.288.166-1.347.277-2.625.241-3.351%201.378-1.008%202.271-2.586%202.271-4.362%200-.976-.272-1.935-.788-2.774-.057-.094-.122-.18-.184-.268.033-.167.052-.339.052-.516%200-1.477-1.202-2.679-2.679-2.679-.791%200-1.496.352-1.987.9a6.3%206.3%200%200%200-1.001.029c-.492-.564-1.207-.929-2.012-.929-1.477%200-2.679%201.202-2.679%202.679A2.65%202.65%200%200%200%20.97%206.554c-.383.747-.595%201.572-.595%202.41%200%202.311%201.507%204.29%203.635%205.107-.037.699-.147%202.27-.423%203.294l-.137.461c-.622%202.042-2.515%208.257%201.727%2010.643%201.614.908%203.06%201.248%204.317%201.248%202.665%200%204.492-1.524%205.322-2.401%201.476-1.559%202.886-1.854%206.491.82%201.877%201.393%203.514%201.753%204.861%201.068%202.223-1.713%202.811-3.867%203.399-6.374.077-.846.056-1.469.054-1.537zm-4.835%204.313c-.054.305-.156.586-.242.629-.034-.007-.131-.022-.307-.157-.145-.111-.314-.478-.456-.908.221.121.432.25.675.355.115.039.219.051.33.081zm-2.251-1.238c-.05.33-.158.648-.252.694-.022.001-.125-.018-.307-.157-.217-.166-.488-.906-.639-1.573.358.344.754.693%201.198%201.036zm-3.887-2.337c-.006-.116-.018-.231-.041-.342.635.145%201.189.368%201.599.625.097.231.166.481.174.642-.03.049-.055.101-.067.158-.046.013-.128.026-.298.004-.278-.037-.901-.57-1.367-1.087zm-1.127-.497c.116.306.176.625.12.71-.019.014-.117.045-.345.016-.206-.027-.604-.332-.986-.695.41-.051.816-.056%201.211-.031zm-4.535%201.535c.209.22.379.47.358.598-.006.041-.088.138-.351.234-.144.055-.539-.063-.979-.259a11.66%2011.66%200%200%200%20.972-.573zm.983-.664c.359-.237.738-.418%201.126-.554.25.237.479.548.457.694-.006.042-.087.138-.351.235-.174.064-.694-.105-1.232-.375zm-3.381%201.794c-.022.145-.061.29-.149.401-.133.166-.358.248-.69.251h-.002c-.133%200-.306-.26-.45-.621.417.091.854.07%201.291-.031zm-2.066-8.077a4.78%204.78%200%200%201-.775-.584c.172-.115.505-.254.88-.378l-.105.962zm-.331%202.302a10.32%2010.32%200%200%201-.828-.502c.202-.143.576-.328.984-.49l-.156.992zm-.45%202.157l-.701-.403c.214-.115.536-.249.891-.376a11.57%2011.57%200%200%201-.19.779zm-.181%201.716c.064.398.194.702.298.893-.194-.051-.435-.162-.736-.398.061-.119.224-.3.438-.495zM8.87%204.141c0%20.152-.123.276-.276.276s-.275-.124-.275-.276.123-.276.276-.276.275.124.275.276zm-.735-.389a1.15%201.15%200%200%200-.314.783%201.16%201.16%200%200%200%201.162%201.162c.457%200%20.842-.27%201.032-.653.026.117.042.238.042.362a1.68%201.68%200%200%201-1.679%201.679%201.68%201.68%200%200%201-1.679-1.679c0-.843.626-1.535%201.436-1.654zM5.059%205.406A1.68%201.68%200%200%201%203.38%207.085a1.68%201.68%200%200%201-1.679-1.679c0-.037.009-.072.011-.109.21.3.541.508.935.508a1.16%201.16%200%200%200%201.162-1.162%201.14%201.14%200%200%200-.474-.912c.015%200%20.03-.005.045-.005.926.001%201.679.754%201.679%201.68zM3.198%204.141c0%20.152-.123.276-.276.276s-.275-.124-.275-.276.123-.276.276-.276.275.124.275.276zM1.375%208.964c0-.52.103-1.035.288-1.52.466.394%201.06.64%201.717.64%201.144%200%202.116-.725%202.499-1.738.383%201.012%201.355%201.738%202.499%201.738.867%200%201.631-.421%202.121-1.062.307.605.478%201.267.478%201.942%200%202.486-2.153%204.51-4.801%204.51s-4.801-2.023-4.801-4.51zm24.342%2019.349c-.985.498-2.267.168-3.813-.979-3.073-2.281-5.453-3.199-7.813-.705-1.315%201.391-4.163%203.365-8.423.97-3.174-1.786-2.239-6.266-1.261-9.479l.146-.492c.276-1.02.395-2.457.444-3.268a6.11%206.11%200%200%200%201.18.115%206.01%206.01%200%200%200%202.536-.562l-.006.175c-.802.215-1.848.612-2.021%201.25-.079.295.021.601.274.837.219.203.415.364.598.501-.667.304-1.243.698-1.311%201.179-.02.144-.022.507.393.787.213.144.395.26.564.365-1.285.521-1.361.96-1.381%201.126-.018.142-.011.496.427.746l.854.489c-.473.389-.971.914-.999%201.429-.018.278.095.532.316.713.675.556%201.231.721%201.653.721.059%200%20.104-.014.158-.02.207.707.641%201.64%201.513%201.64h.013c.8-.008%201.236-.345%201.462-.626.173-.216.268-.457.325-.692.424.195.93.374%201.372.374.151%200%20.294-.021.423-.068.732-.27.944-.704.993-1.021.009-.061.003-.119.002-.179.266.086.538.147.789.147.15%200%20.294-.021.423-.069.542-.2.797-.489.914-.754.237.147.478.258.704.288.106.014.205.021.296.021.356%200%20.595-.101.767-.229.438.435%201.094.992%201.656%201.067.106.014.205.021.296.021a1.56%201.56%200%200%200%20.323-.035c.17.575.453%201.289.866%201.605.358.273.665.362.914.362a.99.99%200%200%200%20.421-.093%201.03%201.03%200%200%200%20.245-.164c.168.428.39.846.68%201.068.358.273.665.362.913.362a.99.99%200%200%200%20.421-.093c.317-.148.512-.448.639-.762.251.157.495.257.726.257.127%200%20.25-.024.37-.071.427-.17.706-.617.841-1.314.022-.015.047-.022.068-.038.067-.051.133-.104.196-.159-.443%201.486-1.107%202.761-2.086%203.257zM8.66%209.925a.5.5%200%201%200-1%200c0%20.653-.818%201.205-1.787%201.205s-1.787-.552-1.787-1.205a.5.5%200%201%200-1%200c0%201.216%201.25%202.205%202.787%202.205s2.787-.989%202.787-2.205zm4.4%2015.965l-.208.097c-2.661%201.258-4.708%201.436-6.086.527-1.542-1.017-1.88-3.19-1.844-4.198a.4.4%200%200%200-.385-.414c-.242-.029-.406.164-.414.385-.046%201.249.367%203.686%202.202%204.896.708.467%201.547.7%202.51.7%201.248%200%202.706-.392%204.362-1.174l.185-.086a.4.4%200%200%200%20.205-.527c-.089-.204-.326-.291-.527-.206zM9.547%202.292c.093.077.205.114.317.114a.5.5%200%200%200%20.318-.886L8.817.397a.5.5%200%200%200-.703.068.5.5%200%200%200%20.069.703l1.364%201.124zm-7.661-.065c.086%200%20.173-.022.253-.068l1.523-.893a.5.5%200%200%200-.506-.863l-1.523.892a.5.5%200%200%200-.179.685c.094.158.261.247.432.247z%22%20transform%3D%22matrix%28-1%200%200%201%2058%200%29%22%20fill%3D%22%233bb300%22/%3E%3Cpath%20d%3D%22M.3%2021.86V10.18q0-.46.02-.68.04-.22.18-.5.28-.54%201.34-.54%201.06%200%201.42.28.38.26.44.78.76-1.04%202.38-1.04%201.64%200%203.1%201.54%201.46%201.54%201.46%203.58%200%202.04-1.46%203.58-1.44%201.54-3.08%201.54-1.64%200-2.38-.92v4.04q0%20.46-.04.68-.02.22-.18.5-.14.3-.5.42-.36.12-.98.12-.62%200-1-.12-.36-.12-.52-.4-.14-.28-.18-.5-.02-.22-.02-.68zm3.96-9.42q-.46.54-.46%201.18%200%20.64.46%201.18.48.52%201.2.52.74%200%201.24-.52.52-.52.52-1.18%200-.66-.48-1.18-.48-.54-1.26-.54-.76%200-1.22.54zm14.741-8.36q.16-.3.54-.42.38-.12%201-.12.64%200%201.02.12.38.12.52.42.16.3.18.54.04.22.04.68v11.94q0%20.46-.04.7-.02.22-.18.5-.3.54-1.7.54-1.38%200-1.54-.98-.84.96-2.34.96-1.8%200-3.28-1.56-1.48-1.58-1.48-3.66%200-2.1%201.48-3.68%201.5-1.58%203.28-1.58%201.48%200%202.3%201v-4.2q0-.46.02-.68.04-.24.18-.52zm-3.24%2010.86q.52.54%201.26.54.74%200%201.22-.54.5-.54.5-1.18%200-.66-.48-1.22-.46-.56-1.26-.56-.8%200-1.28.56-.48.54-.48%201.2%200%20.66.52%201.2zm7.833-1.2q0-2.4%201.68-3.96%201.68-1.56%203.84-1.56%202.16%200%203.82%201.56%201.66%201.54%201.66%203.94%200%201.66-.86%202.96-.86%201.28-2.1%201.9-1.22.6-2.54.6-1.32%200-2.56-.64-1.24-.66-2.1-1.92-.84-1.28-.84-2.88zm4.18%201.44q.64.48%201.3.48.66%200%201.32-.5.66-.5.66-1.48%200-.98-.62-1.46-.62-.48-1.34-.48-.72%200-1.34.5-.62.5-.62%201.48%200%20.96.64%201.46zm11.412-1.44q0%20.84.56%201.32.56.46%201.18.46.64%200%201.18-.36.56-.38.9-.38.6%200%201.46%201.06.46.58.46%201.04%200%20.76-1.1%201.42-1.14.8-2.8.8-1.86%200-3.58-1.34-.82-.64-1.34-1.7-.52-1.08-.52-2.36%200-1.3.52-2.34.52-1.06%201.34-1.7%201.66-1.32%203.54-1.32.76%200%201.48.22.72.2%201.06.4l.32.2q.36.24.56.38.52.4.52.92%200%20.5-.42%201.14-.72%201.1-1.38%201.1-.38%200-1.08-.44-.36-.34-1.04-.34-.66%200-1.24.48-.58.48-.58%201.34z%22%20fill%3D%22green%22/%3E%3C/svg%3E"/>
</a>
</div>
</nav>
<main class="pdoc">
<section class="module-info">
<h1 class="modulename">
<a href="./../pyerrors.html">pyerrors</a><wbr>.special </h1>
<input id="mod-special-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-source-button" for="mod-special-view-source"><span>View Source</span></label>
<div class="pdoc-code codehilite"><pre><span></span><span id="L-1"><a href="#L-1"><span class="linenos"> 1</span></a><span class="kn">import</span> <span class="nn">scipy</span>
</span><span id="L-2"><a href="#L-2"><span class="linenos"> 2</span></a><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
</span><span id="L-3"><a href="#L-3"><span class="linenos"> 3</span></a><span class="kn">from</span> <span class="nn">autograd.extend</span> <span class="kn">import</span> <span class="n">primitive</span><span class="p">,</span> <span class="n">defvjp</span>
</span><span id="L-4"><a href="#L-4"><span class="linenos"> 4</span></a><span class="kn">from</span> <span class="nn">autograd.scipy.special</span> <span class="kn">import</span> <span class="n">j0</span><span class="p">,</span> <span class="n">y0</span><span class="p">,</span> <span class="n">j1</span><span class="p">,</span> <span class="n">y1</span><span class="p">,</span> <span class="n">jn</span><span class="p">,</span> <span class="n">yn</span><span class="p">,</span> <span class="n">i0</span><span class="p">,</span> <span class="n">i1</span><span class="p">,</span> <span class="n">iv</span><span class="p">,</span> <span class="n">ive</span><span class="p">,</span> <span class="n">beta</span><span class="p">,</span> <span class="n">betainc</span><span class="p">,</span> <span class="n">betaln</span>
</span><span id="L-5"><a href="#L-5"><span class="linenos"> 5</span></a><span class="kn">from</span> <span class="nn">autograd.scipy.special</span> <span class="kn">import</span> <span class="n">polygamma</span><span class="p">,</span> <span class="n">psi</span><span class="p">,</span> <span class="n">digamma</span><span class="p">,</span> <span class="n">gamma</span><span class="p">,</span> <span class="n">gammaln</span><span class="p">,</span> <span class="n">gammainc</span><span class="p">,</span> <span class="n">gammaincc</span><span class="p">,</span> <span class="n">gammasgn</span><span class="p">,</span> <span class="n">rgamma</span><span class="p">,</span> <span class="n">multigammaln</span>
</span><span id="L-6"><a href="#L-6"><span class="linenos"> 6</span></a><span class="kn">from</span> <span class="nn">autograd.scipy.special</span> <span class="kn">import</span> <span class="n">erf</span><span class="p">,</span> <span class="n">erfc</span><span class="p">,</span> <span class="n">erfinv</span><span class="p">,</span> <span class="n">erfcinv</span><span class="p">,</span> <span class="n">logit</span><span class="p">,</span> <span class="n">expit</span><span class="p">,</span> <span class="n">logsumexp</span>
</span><span id="L-7"><a href="#L-7"><span class="linenos"> 7</span></a>
</span><span id="L-8"><a href="#L-8"><span class="linenos"> 8</span></a>
</span><span id="L-9"><a href="#L-9"><span class="linenos"> 9</span></a><span class="n">__all__</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;beta&quot;</span><span class="p">,</span> <span class="s2">&quot;betainc&quot;</span><span class="p">,</span> <span class="s2">&quot;betaln&quot;</span><span class="p">,</span>
</span><span id="L-10"><a href="#L-10"><span class="linenos">10</span></a> <span class="s2">&quot;polygamma&quot;</span><span class="p">,</span> <span class="s2">&quot;psi&quot;</span><span class="p">,</span> <span class="s2">&quot;digamma&quot;</span><span class="p">,</span> <span class="s2">&quot;gamma&quot;</span><span class="p">,</span> <span class="s2">&quot;gammaln&quot;</span><span class="p">,</span> <span class="s2">&quot;gammainc&quot;</span><span class="p">,</span> <span class="s2">&quot;gammaincc&quot;</span><span class="p">,</span> <span class="s2">&quot;gammasgn&quot;</span><span class="p">,</span> <span class="s2">&quot;rgamma&quot;</span><span class="p">,</span> <span class="s2">&quot;multigammaln&quot;</span><span class="p">,</span>
</span><span id="L-11"><a href="#L-11"><span class="linenos">11</span></a> <span class="s2">&quot;kn&quot;</span><span class="p">,</span> <span class="s2">&quot;j0&quot;</span><span class="p">,</span> <span class="s2">&quot;y0&quot;</span><span class="p">,</span> <span class="s2">&quot;j1&quot;</span><span class="p">,</span> <span class="s2">&quot;y1&quot;</span><span class="p">,</span> <span class="s2">&quot;jn&quot;</span><span class="p">,</span> <span class="s2">&quot;yn&quot;</span><span class="p">,</span> <span class="s2">&quot;i0&quot;</span><span class="p">,</span> <span class="s2">&quot;i1&quot;</span><span class="p">,</span> <span class="s2">&quot;iv&quot;</span><span class="p">,</span> <span class="s2">&quot;ive&quot;</span><span class="p">,</span>
</span><span id="L-12"><a href="#L-12"><span class="linenos">12</span></a> <span class="s2">&quot;erf&quot;</span><span class="p">,</span> <span class="s2">&quot;erfc&quot;</span><span class="p">,</span> <span class="s2">&quot;erfinv&quot;</span><span class="p">,</span> <span class="s2">&quot;erfcinv&quot;</span><span class="p">,</span> <span class="s2">&quot;logit&quot;</span><span class="p">,</span> <span class="s2">&quot;expit&quot;</span><span class="p">,</span> <span class="s2">&quot;logsumexp&quot;</span><span class="p">]</span>
</span><span id="L-13"><a href="#L-13"><span class="linenos">13</span></a>
</span><span id="L-14"><a href="#L-14"><span class="linenos">14</span></a>
</span><span id="L-15"><a href="#L-15"><span class="linenos">15</span></a><span class="nd">@primitive</span>
</span><span id="L-16"><a href="#L-16"><span class="linenos">16</span></a><span class="k">def</span> <span class="nf">kn</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
</span><span id="L-17"><a href="#L-17"><span class="linenos">17</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Modified Bessel function of the second kind of integer order n&quot;&quot;&quot;</span>
</span><span id="L-18"><a href="#L-18"><span class="linenos">18</span></a> <span class="k">if</span> <span class="nb">int</span><span class="p">(</span><span class="n">n</span><span class="p">)</span> <span class="o">!=</span> <span class="n">n</span><span class="p">:</span>
</span><span id="L-19"><a href="#L-19"><span class="linenos">19</span></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s2">&quot;The order &#39;n&#39; needs to be an integer.&quot;</span><span class="p">)</span>
</span><span id="L-20"><a href="#L-20"><span class="linenos">20</span></a> <span class="k">return</span> <span class="n">scipy</span><span class="o">.</span><span class="n">special</span><span class="o">.</span><span class="n">kn</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span>
</span><span id="L-21"><a href="#L-21"><span class="linenos">21</span></a>
</span><span id="L-22"><a href="#L-22"><span class="linenos">22</span></a>
</span><span id="L-23"><a href="#L-23"><span class="linenos">23</span></a><span class="n">defvjp</span><span class="p">(</span><span class="n">kn</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="k">lambda</span> <span class="n">ans</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="n">x</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">g</span><span class="p">:</span> <span class="o">-</span> <span class="n">g</span> <span class="o">*</span> <span class="mf">0.5</span> <span class="o">*</span> <span class="p">(</span><span class="n">kn</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">1</span><span class="p">),</span> <span class="n">x</span><span class="p">)</span> <span class="o">+</span> <span class="n">kn</span><span class="p">(</span><span class="n">n</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">x</span><span class="p">)))</span>
</span></pre></div>
</section>
<section id="beta">
<input id="beta-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<div class="decorator">@wraps(f_raw)</div>
<span class="def">def</span>
<span class="name">beta</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="beta-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#beta"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="beta-36"><a href="#beta-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
</span><span id="beta-37"><a href="#beta-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="beta-38"><a href="#beta-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
</span><span id="beta-39"><a href="#beta-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
</span><span id="beta-40"><a href="#beta-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
</span><span id="beta-41"><a href="#beta-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
</span><span id="beta-42"><a href="#beta-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="beta-43"><a href="#beta-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="beta-44"><a href="#beta-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="beta-45"><a href="#beta-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="beta-46"><a href="#beta-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
</span><span id="beta-47"><a href="#beta-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
</span><span id="beta-48"><a href="#beta-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="beta-49"><a href="#beta-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>beta(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
<p>beta(a, b, out=None)</p>
<p>Beta function.</p>
<p>This function is defined in <sup class="footnote-ref" id="fnref-1"><a href="#fn-1">1</a></sup> as</p>
<p>$$B(a, b) = \int_0^1 t^{a-1}(1-t)^{b-1}dt
= \frac{\Gamma(a)\Gamma(b)}{\Gamma(a+b)},$$</p>
<p>where \( \Gamma \) is the gamma function.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>a, b</strong> (array_like):
Real-valued arguments</li>
<li><strong>out</strong> (ndarray, optional):
Optional output array for the function result</li>
</ul>
<h6 id="returns">Returns</h6>
<ul>
<li><strong>scalar or ndarray</strong>: Value of the beta function</li>
</ul>
<h6 id="see-also">See Also</h6>
<p><code><a href="#gamma">gamma</a></code>: the gamma function <br />
<code><a href="#betainc">betainc</a></code>: the regularized incomplete beta function <br />
<code><a href="#betaln">betaln</a></code>: the natural logarithm of the absolute
value of the beta function </p>
<h6 id="references">References</h6>
<h6 id="examples">Examples</h6>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">scipy.special</span> <span class="k">as</span> <span class="nn">sc</span>
</code></pre>
</div>
<p>The beta function relates to the gamma function by the
definition given above:</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">sc</span><span class="o">.</span><span class="n">beta</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span>
<span class="go">0.08333333333333333</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">sc</span><span class="o">.</span><span class="n">gamma</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span><span class="o">*</span><span class="n">sc</span><span class="o">.</span><span class="n">gamma</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span><span class="o">/</span><span class="n">sc</span><span class="o">.</span><span class="n">gamma</span><span class="p">(</span><span class="mi">2</span> <span class="o">+</span> <span class="mi">3</span><span class="p">)</span>
<span class="go">0.08333333333333333</span>
</code></pre>
</div>
<p>As this relationship demonstrates, the beta function
is symmetric:</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">sc</span><span class="o">.</span><span class="n">beta</span><span class="p">(</span><span class="mf">1.7</span><span class="p">,</span> <span class="mf">2.4</span><span class="p">)</span>
<span class="go">0.16567527689031739</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">sc</span><span class="o">.</span><span class="n">beta</span><span class="p">(</span><span class="mf">2.4</span><span class="p">,</span> <span class="mf">1.7</span><span class="p">)</span>
<span class="go">0.16567527689031739</span>
</code></pre>
</div>
<p>This function satisfies \( B(1, b) = 1/b \):</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">sc</span><span class="o">.</span><span class="n">beta</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">4</span><span class="p">)</span>
<span class="go">0.25</span>
</code></pre>
</div>
<div class="footnotes">
<hr />
<ol>
<li id="fn-1">
<p>NIST Digital Library of Mathematical Functions,
Eq. 5.12.1. <a href="https://dlmf.nist.gov/5.12">https://dlmf.nist.gov/5.12</a>&#160;<a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 1 in the text.">&#8617;</a></p>
</li>
</ol>
</div>
</div>
</section>
<section id="betainc">
<input id="betainc-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<div class="decorator">@wraps(f_raw)</div>
<span class="def">def</span>
<span class="name">betainc</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="betainc-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#betainc"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="betainc-36"><a href="#betainc-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
</span><span id="betainc-37"><a href="#betainc-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="betainc-38"><a href="#betainc-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
</span><span id="betainc-39"><a href="#betainc-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
</span><span id="betainc-40"><a href="#betainc-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
</span><span id="betainc-41"><a href="#betainc-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
</span><span id="betainc-42"><a href="#betainc-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="betainc-43"><a href="#betainc-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="betainc-44"><a href="#betainc-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="betainc-45"><a href="#betainc-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="betainc-46"><a href="#betainc-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
</span><span id="betainc-47"><a href="#betainc-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
</span><span id="betainc-48"><a href="#betainc-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="betainc-49"><a href="#betainc-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>betainc(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
<p>betainc(a, b, x, out=None)</p>
<p>Regularized incomplete beta function.</p>
<p>Computes the regularized incomplete beta function, defined as <sup class="footnote-ref" id="fnref-1"><a href="#fn-1">1</a></sup>:</p>
<p>$$I_x(a, b) = \frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)} \int_0^x
t^{a-1}(1-t)^{b-1}dt,$$</p>
<p>for \( 0 \leq x \leq 1 \).</p>
<p>This function is the cumulative distribution function for the beta
distribution; its range is [0, 1].</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>a, b</strong> (array_like):
Positive, real-valued parameters</li>
<li><strong>x</strong> (array_like):
Real-valued such that \( 0 \leq x \leq 1 \),
the upper limit of integration</li>
<li><strong>out</strong> (ndarray, optional):
Optional output array for the function values</li>
</ul>
<h6 id="returns">Returns</h6>
<ul>
<li><strong>scalar or ndarray</strong>: Value of the regularized incomplete beta function</li>
</ul>
<h6 id="see-also">See Also</h6>
<p><code><a href="#beta">beta</a></code>: beta function <br />
<code>betaincinv</code>: inverse of the regularized incomplete beta function <br />
<code>betaincc</code>: complement of the regularized incomplete beta function <br />
<code>scipy.stats.beta</code>: beta distribution </p>
<h6 id="notes">Notes</h6>
<p>The term <em>regularized</em> in the name of this function refers to the
scaling of the function by the gamma function terms shown in the
formula. When not qualified as <em>regularized</em>, the name <em>incomplete
beta function</em> often refers to just the integral expression,
without the gamma terms. One can use the function <code><a href="#beta">beta</a></code> from
<code>scipy.special</code> to get this "nonregularized" incomplete beta
function by multiplying the result of <code>betainc(a, b, x)</code> by
<code>beta(a, b)</code>.</p>
<h6 id="references">References</h6>
<h6 id="examples">Examples</h6>
<p>Let \( B(a, b) \) be the <code><a href="#beta">beta</a></code> function.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">scipy.special</span> <span class="k">as</span> <span class="nn">sc</span>
</code></pre>
</div>
<p>The coefficient in terms of <code><a href="#gamma">gamma</a></code> is equal to
\( 1/B(a, b) \). Also, when \( x=1 \)
the integral is equal to \( B(a, b) \).
Therefore, \( I_{x=1}(a, b) = 1 \) for any \( a, b \).</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">sc</span><span class="o">.</span><span class="n">betainc</span><span class="p">(</span><span class="mf">0.2</span><span class="p">,</span> <span class="mf">3.5</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">)</span>
<span class="go">1.0</span>
</code></pre>
</div>
<p>It satisfies
\( I_x(a, b) = x^a F(a, 1-b, a+1, x)/ (aB(a, b)) \),
where \( F \) is the hypergeometric function <code>hyp2f1</code>:</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">x</span> <span class="o">=</span> <span class="mf">1.4</span><span class="p">,</span> <span class="mf">3.1</span><span class="p">,</span> <span class="mf">0.5</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">x</span><span class="o">**</span><span class="n">a</span> <span class="o">*</span> <span class="n">sc</span><span class="o">.</span><span class="n">hyp2f1</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="mi">1</span> <span class="o">-</span> <span class="n">b</span><span class="p">,</span> <span class="n">a</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="n">a</span> <span class="o">*</span> <span class="n">sc</span><span class="o">.</span><span class="n">beta</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">))</span>
<span class="go">0.8148904036225295</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">sc</span><span class="o">.</span><span class="n">betainc</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span>
<span class="go">0.8148904036225296</span>
</code></pre>
</div>
<p>This functions satisfies the relationship
\( I_x(a, b) = 1 - I_{1-x}(b, a) \):</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">sc</span><span class="o">.</span><span class="n">betainc</span><span class="p">(</span><span class="mf">2.2</span><span class="p">,</span> <span class="mf">3.1</span><span class="p">,</span> <span class="mf">0.4</span><span class="p">)</span>
<span class="go">0.49339638807619446</span>
<span class="gp">&gt;&gt;&gt; </span><span class="mi">1</span> <span class="o">-</span> <span class="n">sc</span><span class="o">.</span><span class="n">betainc</span><span class="p">(</span><span class="mf">3.1</span><span class="p">,</span> <span class="mf">2.2</span><span class="p">,</span> <span class="mi">1</span> <span class="o">-</span> <span class="mf">0.4</span><span class="p">)</span>
<span class="go">0.49339638807619446</span>
</code></pre>
</div>
<div class="footnotes">
<hr />
<ol>
<li id="fn-1">
<p>NIST Digital Library of Mathematical Functions
<a href="https://dlmf.nist.gov/8.17">https://dlmf.nist.gov/8.17</a>&#160;<a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 1 in the text.">&#8617;</a></p>
</li>
</ol>
</div>
</div>
</section>
<section id="betaln">
<input id="betaln-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<div class="decorator">@wraps(f_raw)</div>
<span class="def">def</span>
<span class="name">betaln</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="betaln-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#betaln"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="betaln-36"><a href="#betaln-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
</span><span id="betaln-37"><a href="#betaln-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="betaln-38"><a href="#betaln-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
</span><span id="betaln-39"><a href="#betaln-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
</span><span id="betaln-40"><a href="#betaln-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
</span><span id="betaln-41"><a href="#betaln-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
</span><span id="betaln-42"><a href="#betaln-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="betaln-43"><a href="#betaln-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="betaln-44"><a href="#betaln-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="betaln-45"><a href="#betaln-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="betaln-46"><a href="#betaln-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
</span><span id="betaln-47"><a href="#betaln-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
</span><span id="betaln-48"><a href="#betaln-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="betaln-49"><a href="#betaln-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>betaln(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
<p>betaln(a, b, out=None)</p>
<p>Natural logarithm of absolute value of beta function.</p>
<p>Computes <code>ln(abs(beta(a, b)))</code>.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>a, b</strong> (array_like):
Positive, real-valued parameters</li>
<li><strong>out</strong> (ndarray, optional):
Optional output array for function values</li>
</ul>
<h6 id="returns">Returns</h6>
<ul>
<li><strong>scalar or ndarray</strong>: Value of the betaln function</li>
</ul>
<h6 id="see-also">See Also</h6>
<p><code><a href="#gamma">gamma</a></code>: the gamma function <br />
<code><a href="#betainc">betainc</a></code>: the regularized incomplete beta function <br />
<code><a href="#beta">beta</a></code>: the beta function </p>
<h6 id="examples">Examples</h6>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">betaln</span><span class="p">,</span> <span class="n">beta</span>
</code></pre>
</div>
<p>Verify that, for moderate values of <code>a</code> and <code>b</code>, <code>betaln(a, b)</code>
is the same as <code>log(beta(a, b))</code>:</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">betaln</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">)</span>
<span class="go">-4.0943445622221</span>
</code></pre>
</div>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">np</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="n">beta</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">))</span>
<span class="go">-4.0943445622221</span>
</code></pre>
</div>
<p>In the following <code>beta(a, b)</code> underflows to 0, so we can't compute
the logarithm of the actual value.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">a</span> <span class="o">=</span> <span class="mi">400</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">b</span> <span class="o">=</span> <span class="mi">900</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">beta</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">)</span>
<span class="go">0.0</span>
</code></pre>
</div>
<p>We can compute the logarithm of <code>beta(a, b)</code> by using <code><a href="#betaln">betaln</a></code>:</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">betaln</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">)</span>
<span class="go">-804.3069951764146</span>
</code></pre>
</div>
</div>
</section>
<section id="polygamma">
<input id="polygamma-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<div class="decorator">@wraps(f_raw)</div>
<span class="def">def</span>
<span class="name">polygamma</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="polygamma-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#polygamma"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="polygamma-36"><a href="#polygamma-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
</span><span id="polygamma-37"><a href="#polygamma-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="polygamma-38"><a href="#polygamma-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
</span><span id="polygamma-39"><a href="#polygamma-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
</span><span id="polygamma-40"><a href="#polygamma-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
</span><span id="polygamma-41"><a href="#polygamma-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
</span><span id="polygamma-42"><a href="#polygamma-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="polygamma-43"><a href="#polygamma-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="polygamma-44"><a href="#polygamma-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="polygamma-45"><a href="#polygamma-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="polygamma-46"><a href="#polygamma-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
</span><span id="polygamma-47"><a href="#polygamma-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
</span><span id="polygamma-48"><a href="#polygamma-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="polygamma-49"><a href="#polygamma-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>Polygamma functions.</p>
<p>Defined as \( \psi^{(n)}(x) \) where \( \psi \) is the
<code><a href="#digamma">digamma</a></code> function. See [dlmf]_ for details.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>n</strong> (array_like):
The order of the derivative of the digamma function; must be
integral</li>
<li><strong>x</strong> (array_like):
Real valued input</li>
</ul>
<h6 id="returns">Returns</h6>
<ul>
<li><strong>ndarray</strong>: Function results</li>
</ul>
<h6 id="see-also">See Also</h6>
<p><code><a href="#digamma">digamma</a></code> </p>
<h6 id="references">References</h6>
<p>.. [dlmf] NIST, Digital Library of Mathematical Functions,
<a href="https://dlmf.nist.gov/5.15">https://dlmf.nist.gov/5.15</a></p>
<h6 id="examples">Examples</h6>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">scipy</span> <span class="kn">import</span> <span class="n">special</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">x</span> <span class="o">=</span> <span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mf">25.5</span><span class="p">]</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">special</span><span class="o">.</span><span class="n">polygamma</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span>
<span class="go">array([ 0.64493407, 0.39493407, 0.03999467])</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">special</span><span class="o">.</span><span class="n">polygamma</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span> <span class="o">==</span> <span class="n">special</span><span class="o">.</span><span class="n">psi</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
<span class="go">array([ True, True, True], dtype=bool)</span>
</code></pre>
</div>
</div>
</section>
<section id="psi">
<input id="psi-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<div class="decorator">@wraps(f_raw)</div>
<span class="def">def</span>
<span class="name">psi</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="psi-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#psi"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="psi-36"><a href="#psi-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
</span><span id="psi-37"><a href="#psi-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="psi-38"><a href="#psi-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
</span><span id="psi-39"><a href="#psi-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
</span><span id="psi-40"><a href="#psi-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
</span><span id="psi-41"><a href="#psi-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
</span><span id="psi-42"><a href="#psi-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="psi-43"><a href="#psi-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="psi-44"><a href="#psi-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="psi-45"><a href="#psi-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="psi-46"><a href="#psi-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
</span><span id="psi-47"><a href="#psi-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
</span><span id="psi-48"><a href="#psi-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="psi-49"><a href="#psi-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>psi(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
<p>psi(z, out=None)</p>
<p>The digamma function.</p>
<p>The logarithmic derivative of the gamma function evaluated at <code>z</code>.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>z</strong> (array_like):
Real or complex argument.</li>
<li><strong>out</strong> (ndarray, optional):
Array for the computed values of <code><a href="#psi">psi</a></code>.</li>
</ul>
<h6 id="returns">Returns</h6>
<ul>
<li><strong>digamma</strong> (scalar or ndarray):
Computed values of <code><a href="#psi">psi</a></code>.</li>
</ul>
<h6 id="notes">Notes</h6>
<p>For large values not close to the negative real axis, <code><a href="#psi">psi</a></code> is
computed using the asymptotic series (5.11.2) from <sup class="footnote-ref" id="fnref-1"><a href="#fn-1">1</a></sup>. For small
arguments not close to the negative real axis, the recurrence
relation (5.5.2) from <sup class="footnote-ref" id="fnref-1"><a href="#fn-1">2</a></sup> is used until the argument is large
enough to use the asymptotic series. For values close to the
negative real axis, the reflection formula (5.5.4) from <sup class="footnote-ref" id="fnref-1"><a href="#fn-1">3</a></sup> is
used first. Note that <code><a href="#psi">psi</a></code> has a family of zeros on the
negative real axis which occur between the poles at nonpositive
integers. Around the zeros the reflection formula suffers from
cancellation and the implementation loses precision. The sole
positive zero and the first negative zero, however, are handled
separately by precomputing series expansions using <sup class="footnote-ref" id="fnref-2"><a href="#fn-2">4</a></sup>, so the
function should maintain full accuracy around the origin.</p>
<h6 id="references">References</h6>
<h6 id="examples">Examples</h6>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">psi</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">z</span> <span class="o">=</span> <span class="mi">3</span> <span class="o">+</span> <span class="mi">4</span><span class="n">j</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">psi</span><span class="p">(</span><span class="n">z</span><span class="p">)</span>
<span class="go">(1.55035981733341+1.0105022091860445j)</span>
</code></pre>
</div>
<p>Verify psi(z) = psi(z + 1) - 1/z:</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">psi</span><span class="p">(</span><span class="n">z</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="o">/</span><span class="n">z</span>
<span class="go">(1.55035981733341+1.0105022091860445j)</span>
</code></pre>
</div>
<div class="footnotes">
<hr />
<ol>
<li id="fn-1">
<p>NIST Digital Library of Mathematical Functions
<a href="https://dlmf.nist.gov/5">https://dlmf.nist.gov/5</a>&#160;<a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 1 in the text.">&#8617;</a></p>
</li>
<li id="fn-1">
<p>NIST Digital Library of Mathematical Functions
<a href="https://dlmf.nist.gov/5">https://dlmf.nist.gov/5</a>&#160;<a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 2 in the text.">&#8617;</a></p>
</li>
<li id="fn-1">
<p>NIST Digital Library of Mathematical Functions
<a href="https://dlmf.nist.gov/5">https://dlmf.nist.gov/5</a>&#160;<a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 3 in the text.">&#8617;</a></p>
</li>
<li id="fn-2">
<p>Fredrik Johansson and others.
"mpmath: a Python library for arbitrary-precision floating-point arithmetic"
(Version 0.19) <a href="http://mpmath.org/">http://mpmath.org/</a>&#160;<a href="#fnref-2" class="footnoteBackLink" title="Jump back to footnote 4 in the text.">&#8617;</a></p>
</li>
</ol>
</div>
</div>
</section>
<section id="digamma">
<input id="digamma-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<div class="decorator">@wraps(f_raw)</div>
<span class="def">def</span>
<span class="name">digamma</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="digamma-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#digamma"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="digamma-36"><a href="#digamma-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
</span><span id="digamma-37"><a href="#digamma-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="digamma-38"><a href="#digamma-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
</span><span id="digamma-39"><a href="#digamma-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
</span><span id="digamma-40"><a href="#digamma-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
</span><span id="digamma-41"><a href="#digamma-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
</span><span id="digamma-42"><a href="#digamma-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="digamma-43"><a href="#digamma-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="digamma-44"><a href="#digamma-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="digamma-45"><a href="#digamma-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="digamma-46"><a href="#digamma-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
</span><span id="digamma-47"><a href="#digamma-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
</span><span id="digamma-48"><a href="#digamma-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="digamma-49"><a href="#digamma-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>psi(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
<p>psi(z, out=None)</p>
<p>The digamma function.</p>
<p>The logarithmic derivative of the gamma function evaluated at <code>z</code>.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>z</strong> (array_like):
Real or complex argument.</li>
<li><strong>out</strong> (ndarray, optional):
Array for the computed values of <code><a href="#psi">psi</a></code>.</li>
</ul>
<h6 id="returns">Returns</h6>
<ul>
<li><strong>digamma</strong> (scalar or ndarray):
Computed values of <code><a href="#psi">psi</a></code>.</li>
</ul>
<h6 id="notes">Notes</h6>
<p>For large values not close to the negative real axis, <code><a href="#psi">psi</a></code> is
computed using the asymptotic series (5.11.2) from <sup class="footnote-ref" id="fnref-1"><a href="#fn-1">1</a></sup>. For small
arguments not close to the negative real axis, the recurrence
relation (5.5.2) from <sup class="footnote-ref" id="fnref-1"><a href="#fn-1">2</a></sup> is used until the argument is large
enough to use the asymptotic series. For values close to the
negative real axis, the reflection formula (5.5.4) from <sup class="footnote-ref" id="fnref-1"><a href="#fn-1">3</a></sup> is
used first. Note that <code><a href="#psi">psi</a></code> has a family of zeros on the
negative real axis which occur between the poles at nonpositive
integers. Around the zeros the reflection formula suffers from
cancellation and the implementation loses precision. The sole
positive zero and the first negative zero, however, are handled
separately by precomputing series expansions using <sup class="footnote-ref" id="fnref-2"><a href="#fn-2">4</a></sup>, so the
function should maintain full accuracy around the origin.</p>
<h6 id="references">References</h6>
<h6 id="examples">Examples</h6>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">psi</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">z</span> <span class="o">=</span> <span class="mi">3</span> <span class="o">+</span> <span class="mi">4</span><span class="n">j</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">psi</span><span class="p">(</span><span class="n">z</span><span class="p">)</span>
<span class="go">(1.55035981733341+1.0105022091860445j)</span>
</code></pre>
</div>
<p>Verify psi(z) = psi(z + 1) - 1/z:</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">psi</span><span class="p">(</span><span class="n">z</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="o">/</span><span class="n">z</span>
<span class="go">(1.55035981733341+1.0105022091860445j)</span>
</code></pre>
</div>
<div class="footnotes">
<hr />
<ol>
<li id="fn-1">
<p>NIST Digital Library of Mathematical Functions
<a href="https://dlmf.nist.gov/5">https://dlmf.nist.gov/5</a>&#160;<a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 1 in the text.">&#8617;</a></p>
</li>
<li id="fn-1">
<p>NIST Digital Library of Mathematical Functions
<a href="https://dlmf.nist.gov/5">https://dlmf.nist.gov/5</a>&#160;<a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 2 in the text.">&#8617;</a></p>
</li>
<li id="fn-1">
<p>NIST Digital Library of Mathematical Functions
<a href="https://dlmf.nist.gov/5">https://dlmf.nist.gov/5</a>&#160;<a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 3 in the text.">&#8617;</a></p>
</li>
<li id="fn-2">
<p>Fredrik Johansson and others.
"mpmath: a Python library for arbitrary-precision floating-point arithmetic"
(Version 0.19) <a href="http://mpmath.org/">http://mpmath.org/</a>&#160;<a href="#fnref-2" class="footnoteBackLink" title="Jump back to footnote 4 in the text.">&#8617;</a></p>
</li>
</ol>
</div>
</div>
</section>
<section id="gamma">
<input id="gamma-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<div class="decorator">@wraps(f_raw)</div>
<span class="def">def</span>
<span class="name">gamma</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="gamma-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#gamma"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="gamma-36"><a href="#gamma-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
</span><span id="gamma-37"><a href="#gamma-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="gamma-38"><a href="#gamma-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
</span><span id="gamma-39"><a href="#gamma-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
</span><span id="gamma-40"><a href="#gamma-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
</span><span id="gamma-41"><a href="#gamma-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
</span><span id="gamma-42"><a href="#gamma-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="gamma-43"><a href="#gamma-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="gamma-44"><a href="#gamma-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="gamma-45"><a href="#gamma-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="gamma-46"><a href="#gamma-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
</span><span id="gamma-47"><a href="#gamma-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
</span><span id="gamma-48"><a href="#gamma-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="gamma-49"><a href="#gamma-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>gamma(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
<p>gamma(z, out=None)</p>
<p>gamma function.</p>
<p>The gamma function is defined as</p>
<p>$$\Gamma(z) = \int_0^\infty t^{z-1} e^{-t} dt$$</p>
<p>for \( \Re(z) &gt; 0 \) and is extended to the rest of the complex
plane by analytic continuation. See [dlmf]_ for more details.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>z</strong> (array_like):
Real or complex valued argument</li>
<li><strong>out</strong> (ndarray, optional):
Optional output array for the function values</li>
</ul>
<h6 id="returns">Returns</h6>
<ul>
<li><strong>scalar or ndarray</strong>: Values of the gamma function</li>
</ul>
<h6 id="notes">Notes</h6>
<p>The gamma function is often referred to as the generalized
factorial since \( \Gamma(n + 1) = n! \) for natural numbers
\( n \). More generally it satisfies the recurrence relation
\( \Gamma(z + 1) = z \cdot \Gamma(z) \) for complex \( z \),
which, combined with the fact that \( \Gamma(1) = 1 \), implies
the above identity for \( z = n \).</p>
<h6 id="references">References</h6>
<p>.. [dlmf] NIST Digital Library of Mathematical Functions
<a href="https://dlmf.nist.gov/5.2#E1">https://dlmf.nist.gov/5.2#E1</a></p>
<h6 id="examples">Examples</h6>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">gamma</span><span class="p">,</span> <span class="n">factorial</span>
</code></pre>
</div>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">gamma</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">5</span><span class="p">])</span>
<span class="go">array([ inf, 1.77245385, 1. , 24. ])</span>
</code></pre>
</div>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">z</span> <span class="o">=</span> <span class="mf">2.5</span> <span class="o">+</span> <span class="mi">1</span><span class="n">j</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">gamma</span><span class="p">(</span><span class="n">z</span><span class="p">)</span>
<span class="go">(0.77476210455108352+0.70763120437959293j)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">gamma</span><span class="p">(</span><span class="n">z</span><span class="o">+</span><span class="mi">1</span><span class="p">),</span> <span class="n">z</span><span class="o">*</span><span class="n">gamma</span><span class="p">(</span><span class="n">z</span><span class="p">)</span> <span class="c1"># Recurrence property</span>
<span class="go">((1.2292740569981171+2.5438401155000685j),</span>
<span class="go"> (1.2292740569981158+2.5438401155000658j))</span>
</code></pre>
</div>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">gamma</span><span class="p">(</span><span class="mf">0.5</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span> <span class="c1"># gamma(0.5) = sqrt(pi)</span>
<span class="go">3.1415926535897927</span>
</code></pre>
</div>
<p>Plot gamma(x) for real x</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="o">-</span><span class="mf">3.5</span><span class="p">,</span> <span class="mf">5.5</span><span class="p">,</span> <span class="mi">2251</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">y</span> <span class="o">=</span> <span class="n">gamma</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
</code></pre>
</div>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="s1">&#39;b&#39;</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.6</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s1">&#39;gamma(x)&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">k</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">7</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">factorial</span><span class="p">(</span><span class="n">k</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span> <span class="s1">&#39;k*&#39;</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.6</span><span class="p">,</span>
<span class="gp">... </span> <span class="n">label</span><span class="o">=</span><span class="s1">&#39;(x-1)!, x = 1, 2, ...&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">xlim</span><span class="p">(</span><span class="o">-</span><span class="mf">3.5</span><span class="p">,</span> <span class="mf">5.5</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">ylim</span><span class="p">(</span><span class="o">-</span><span class="mi">10</span><span class="p">,</span> <span class="mi">25</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">grid</span><span class="p">()</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s1">&#39;x&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">legend</span><span class="p">(</span><span class="n">loc</span><span class="o">=</span><span class="s1">&#39;lower right&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</code></pre>
</div>
</div>
</section>
<section id="gammaln">
<input id="gammaln-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<div class="decorator">@wraps(f_raw)</div>
<span class="def">def</span>
<span class="name">gammaln</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="gammaln-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#gammaln"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="gammaln-36"><a href="#gammaln-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
</span><span id="gammaln-37"><a href="#gammaln-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="gammaln-38"><a href="#gammaln-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
</span><span id="gammaln-39"><a href="#gammaln-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
</span><span id="gammaln-40"><a href="#gammaln-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
</span><span id="gammaln-41"><a href="#gammaln-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
</span><span id="gammaln-42"><a href="#gammaln-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="gammaln-43"><a href="#gammaln-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="gammaln-44"><a href="#gammaln-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="gammaln-45"><a href="#gammaln-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="gammaln-46"><a href="#gammaln-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
</span><span id="gammaln-47"><a href="#gammaln-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
</span><span id="gammaln-48"><a href="#gammaln-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="gammaln-49"><a href="#gammaln-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>gammaln(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
<p>gammaln(x, out=None)</p>
<p>Logarithm of the absolute value of the gamma function.</p>
<p>Defined as</p>
<p>$$\ln(\lvert\Gamma(x)\rvert)$$</p>
<p>where \( \Gamma \) is the gamma function. For more details on
the gamma function, see [dlmf]_.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>x</strong> (array_like):
Real argument</li>
<li><strong>out</strong> (ndarray, optional):
Optional output array for the function results</li>
</ul>
<h6 id="returns">Returns</h6>
<ul>
<li><strong>scalar or ndarray</strong>: Values of the log of the absolute value of gamma</li>
</ul>
<h6 id="see-also">See Also</h6>
<p><code><a href="#gammasgn">gammasgn</a></code>: sign of the gamma function <br />
<code>loggamma</code>: principal branch of the logarithm of the gamma function </p>
<h6 id="notes">Notes</h6>
<p>It is the same function as the Python standard library function
<code>math.lgamma()</code>.</p>
<p>When used in conjunction with <code><a href="#gammasgn">gammasgn</a></code>, this function is useful
for working in logspace on the real axis without having to deal
with complex numbers via the relation <code>exp(gammaln(x)) =
gammasgn(x) * gamma(x)</code>.</p>
<p>For complex-valued log-gamma, use <code>loggamma</code> instead of <code><a href="#gammaln">gammaln</a></code>.</p>
<h6 id="references">References</h6>
<p>.. [dlmf] NIST Digital Library of Mathematical Functions
<a href="https://dlmf.nist.gov/5">https://dlmf.nist.gov/5</a></p>
<h6 id="examples">Examples</h6>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">scipy.special</span> <span class="k">as</span> <span class="nn">sc</span>
</code></pre>
</div>
<p>It has two positive zeros.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">sc</span><span class="o">.</span><span class="n">gammaln</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">])</span>
<span class="go">array([0., 0.])</span>
</code></pre>
</div>
<p>It has poles at nonpositive integers.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">sc</span><span class="o">.</span><span class="n">gammaln</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">2</span><span class="p">,</span> <span class="o">-</span><span class="mi">3</span><span class="p">,</span> <span class="o">-</span><span class="mi">4</span><span class="p">])</span>
<span class="go">array([inf, inf, inf, inf, inf])</span>
</code></pre>
</div>
<p>It asymptotically approaches <code>x * log(x)</code> (Stirling's formula).</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="mf">1e10</span><span class="p">,</span> <span class="mf">1e20</span><span class="p">,</span> <span class="mf">1e40</span><span class="p">,</span> <span class="mf">1e80</span><span class="p">])</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">sc</span><span class="o">.</span><span class="n">gammaln</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
<span class="go">array([2.20258509e+11, 4.50517019e+21, 9.11034037e+41, 1.83206807e+82])</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">x</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
<span class="go">array([2.30258509e+11, 4.60517019e+21, 9.21034037e+41, 1.84206807e+82])</span>
</code></pre>
</div>
</div>
</section>
<section id="gammainc">
<input id="gammainc-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<div class="decorator">@wraps(f_raw)</div>
<span class="def">def</span>
<span class="name">gammainc</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="gammainc-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#gammainc"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="gammainc-36"><a href="#gammainc-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
</span><span id="gammainc-37"><a href="#gammainc-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="gammainc-38"><a href="#gammainc-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
</span><span id="gammainc-39"><a href="#gammainc-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
</span><span id="gammainc-40"><a href="#gammainc-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
</span><span id="gammainc-41"><a href="#gammainc-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
</span><span id="gammainc-42"><a href="#gammainc-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="gammainc-43"><a href="#gammainc-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="gammainc-44"><a href="#gammainc-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="gammainc-45"><a href="#gammainc-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="gammainc-46"><a href="#gammainc-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
</span><span id="gammainc-47"><a href="#gammainc-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
</span><span id="gammainc-48"><a href="#gammainc-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="gammainc-49"><a href="#gammainc-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>gammainc(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
<p>gammainc(a, x, out=None)</p>
<p>Regularized lower incomplete gamma function.</p>
<p>It is defined as</p>
<p>$$P(a, x) = \frac{1}{\Gamma(a)} \int_0^x t^{a - 1}e^{-t} dt$$</p>
<p>for \( a &gt; 0 \) and \( x \geq 0 \). See [dlmf]_ for details.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>a</strong> (array_like):
Positive parameter</li>
<li><strong>x</strong> (array_like):
Nonnegative argument</li>
<li><strong>out</strong> (ndarray, optional):
Optional output array for the function values</li>
</ul>
<h6 id="returns">Returns</h6>
<ul>
<li><strong>scalar or ndarray</strong>: Values of the lower incomplete gamma function</li>
</ul>
<h6 id="see-also">See Also</h6>
<p><code><a href="#gammaincc">gammaincc</a></code>: regularized upper incomplete gamma function <br />
<code>gammaincinv</code>: inverse of the regularized lower incomplete gamma function <br />
<code>gammainccinv</code>: inverse of the regularized upper incomplete gamma function </p>
<h6 id="notes">Notes</h6>
<p>The function satisfies the relation <code>gammainc(a, x) +
gammaincc(a, x) = 1</code> where <code><a href="#gammaincc">gammaincc</a></code> is the regularized upper
incomplete gamma function.</p>
<p>The implementation largely follows that of [boost]_.</p>
<h6 id="references">References</h6>
<p>.. [dlmf] NIST Digital Library of Mathematical functions
<a href="https://dlmf.nist.gov/8.2#E4">https://dlmf.nist.gov/8.2#E4</a>
.. [boost] Maddock et. al., "Incomplete Gamma Functions",
<a href="https://www.boost.org/doc/libs/1_61_0/libs/math/doc/html/math_toolkit/sf_gamma/igamma.html">https://www.boost.org/doc/libs/1_61_0/libs/math/doc/html/math_toolkit/sf_gamma/igamma.html</a></p>
<h6 id="examples">Examples</h6>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">scipy.special</span> <span class="k">as</span> <span class="nn">sc</span>
</code></pre>
</div>
<p>It is the CDF of the gamma distribution, so it starts at 0 and
monotonically increases to 1.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">sc</span><span class="o">.</span><span class="n">gammainc</span><span class="p">(</span><span class="mf">0.5</span><span class="p">,</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="mi">100</span><span class="p">])</span>
<span class="go">array([0. , 0.84270079, 0.99999226, 1. ])</span>
</code></pre>
</div>
<p>It is equal to one minus the upper incomplete gamma function.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">a</span><span class="p">,</span> <span class="n">x</span> <span class="o">=</span> <span class="mf">0.5</span><span class="p">,</span> <span class="mf">0.4</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">sc</span><span class="o">.</span><span class="n">gammainc</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span>
<span class="go">0.6289066304773024</span>
<span class="gp">&gt;&gt;&gt; </span><span class="mi">1</span> <span class="o">-</span> <span class="n">sc</span><span class="o">.</span><span class="n">gammaincc</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span>
<span class="go">0.6289066304773024</span>
</code></pre>
</div>
</div>
</section>
<section id="gammaincc">
<input id="gammaincc-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<div class="decorator">@wraps(f_raw)</div>
<span class="def">def</span>
<span class="name">gammaincc</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="gammaincc-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#gammaincc"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="gammaincc-36"><a href="#gammaincc-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
</span><span id="gammaincc-37"><a href="#gammaincc-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="gammaincc-38"><a href="#gammaincc-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
</span><span id="gammaincc-39"><a href="#gammaincc-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
</span><span id="gammaincc-40"><a href="#gammaincc-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
</span><span id="gammaincc-41"><a href="#gammaincc-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
</span><span id="gammaincc-42"><a href="#gammaincc-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="gammaincc-43"><a href="#gammaincc-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="gammaincc-44"><a href="#gammaincc-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="gammaincc-45"><a href="#gammaincc-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="gammaincc-46"><a href="#gammaincc-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
</span><span id="gammaincc-47"><a href="#gammaincc-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
</span><span id="gammaincc-48"><a href="#gammaincc-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="gammaincc-49"><a href="#gammaincc-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>gammaincc(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
<p>gammaincc(a, x, out=None)</p>
<p>Regularized upper incomplete gamma function.</p>
<p>It is defined as</p>
<p>$$Q(a, x) = \frac{1}{\Gamma(a)} \int_x^\infty t^{a - 1}e^{-t} dt$$</p>
<p>for \( a &gt; 0 \) and \( x \geq 0 \). See [dlmf]_ for details.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>a</strong> (array_like):
Positive parameter</li>
<li><strong>x</strong> (array_like):
Nonnegative argument</li>
<li><strong>out</strong> (ndarray, optional):
Optional output array for the function values</li>
</ul>
<h6 id="returns">Returns</h6>
<ul>
<li><strong>scalar or ndarray</strong>: Values of the upper incomplete gamma function</li>
</ul>
<h6 id="see-also">See Also</h6>
<p><code><a href="#gammainc">gammainc</a></code>: regularized lower incomplete gamma function <br />
<code>gammaincinv</code>: inverse of the regularized lower incomplete gamma function <br />
<code>gammainccinv</code>: inverse of the regularized upper incomplete gamma function </p>
<h6 id="notes">Notes</h6>
<p>The function satisfies the relation <code>gammainc(a, x) +
gammaincc(a, x) = 1</code> where <code><a href="#gammainc">gammainc</a></code> is the regularized lower
incomplete gamma function.</p>
<p>The implementation largely follows that of [boost]_.</p>
<h6 id="references">References</h6>
<p>.. [dlmf] NIST Digital Library of Mathematical functions
<a href="https://dlmf.nist.gov/8.2#E4">https://dlmf.nist.gov/8.2#E4</a>
.. [boost] Maddock et. al., "Incomplete Gamma Functions",
<a href="https://www.boost.org/doc/libs/1_61_0/libs/math/doc/html/math_toolkit/sf_gamma/igamma.html">https://www.boost.org/doc/libs/1_61_0/libs/math/doc/html/math_toolkit/sf_gamma/igamma.html</a></p>
<h6 id="examples">Examples</h6>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">scipy.special</span> <span class="k">as</span> <span class="nn">sc</span>
</code></pre>
</div>
<p>It is the survival function of the gamma distribution, so it
starts at 1 and monotonically decreases to 0.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">sc</span><span class="o">.</span><span class="n">gammaincc</span><span class="p">(</span><span class="mf">0.5</span><span class="p">,</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="mi">1000</span><span class="p">])</span>
<span class="go">array([1.00000000e+00, 1.57299207e-01, 7.74421643e-06, 2.08848758e-45,</span>
<span class="go"> 0.00000000e+00])</span>
</code></pre>
</div>
<p>It is equal to one minus the lower incomplete gamma function.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">a</span><span class="p">,</span> <span class="n">x</span> <span class="o">=</span> <span class="mf">0.5</span><span class="p">,</span> <span class="mf">0.4</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">sc</span><span class="o">.</span><span class="n">gammaincc</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span>
<span class="go">0.37109336952269756</span>
<span class="gp">&gt;&gt;&gt; </span><span class="mi">1</span> <span class="o">-</span> <span class="n">sc</span><span class="o">.</span><span class="n">gammainc</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span>
<span class="go">0.37109336952269756</span>
</code></pre>
</div>
</div>
</section>
<section id="gammasgn">
<input id="gammasgn-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<div class="decorator">@wraps(f_raw)</div>
<span class="def">def</span>
<span class="name">gammasgn</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="gammasgn-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#gammasgn"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="gammasgn-36"><a href="#gammasgn-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
</span><span id="gammasgn-37"><a href="#gammasgn-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="gammasgn-38"><a href="#gammasgn-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
</span><span id="gammasgn-39"><a href="#gammasgn-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
</span><span id="gammasgn-40"><a href="#gammasgn-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
</span><span id="gammasgn-41"><a href="#gammasgn-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
</span><span id="gammasgn-42"><a href="#gammasgn-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="gammasgn-43"><a href="#gammasgn-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="gammasgn-44"><a href="#gammasgn-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="gammasgn-45"><a href="#gammasgn-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="gammasgn-46"><a href="#gammasgn-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
</span><span id="gammasgn-47"><a href="#gammasgn-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
</span><span id="gammasgn-48"><a href="#gammasgn-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="gammasgn-49"><a href="#gammasgn-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>gammasgn(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
<p>gammasgn(x, out=None)</p>
<p>Sign of the gamma function.</p>
<p>It is defined as</p>
<p>$$\text{gammasgn}(x) =
\begin{cases}
+1 &amp; \Gamma(x) &gt; 0 \
-1 &amp; \Gamma(x) &lt; 0
\end{cases}$$</p>
<p>where \( \Gamma \) is the gamma function; see <code><a href="#gamma">gamma</a></code>. This
definition is complete since the gamma function is never zero;
see the discussion after [dlmf]_.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>x</strong> (array_like):
Real argument</li>
<li><strong>out</strong> (ndarray, optional):
Optional output array for the function values</li>
</ul>
<h6 id="returns">Returns</h6>
<ul>
<li><strong>scalar or ndarray</strong>: Sign of the gamma function</li>
</ul>
<h6 id="see-also">See Also</h6>
<p><code><a href="#gamma">gamma</a></code>: the gamma function <br />
<code><a href="#gammaln">gammaln</a></code>: log of the absolute value of the gamma function <br />
<code>loggamma</code>: analytic continuation of the log of the gamma function </p>
<h6 id="notes">Notes</h6>
<p>The gamma function can be computed as <code>gammasgn(x) *
np.exp(gammaln(x))</code>.</p>
<h6 id="references">References</h6>
<p>.. [dlmf] NIST Digital Library of Mathematical Functions
<a href="https://dlmf.nist.gov/5.2#E1">https://dlmf.nist.gov/5.2#E1</a></p>
<h6 id="examples">Examples</h6>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">scipy.special</span> <span class="k">as</span> <span class="nn">sc</span>
</code></pre>
</div>
<p>It is 1 for <code>x &gt; 0</code>.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">sc</span><span class="o">.</span><span class="n">gammasgn</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">])</span>
<span class="go">array([1., 1., 1., 1.])</span>
</code></pre>
</div>
<p>It alternates between -1 and 1 for negative integers.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">sc</span><span class="o">.</span><span class="n">gammasgn</span><span class="p">([</span><span class="o">-</span><span class="mf">0.5</span><span class="p">,</span> <span class="o">-</span><span class="mf">1.5</span><span class="p">,</span> <span class="o">-</span><span class="mf">2.5</span><span class="p">,</span> <span class="o">-</span><span class="mf">3.5</span><span class="p">])</span>
<span class="go">array([-1., 1., -1., 1.])</span>
</code></pre>
</div>
<p>It can be used to compute the gamma function.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">x</span> <span class="o">=</span> <span class="p">[</span><span class="mf">1.5</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">,</span> <span class="o">-</span><span class="mf">0.5</span><span class="p">,</span> <span class="o">-</span><span class="mf">1.5</span><span class="p">]</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">sc</span><span class="o">.</span><span class="n">gammasgn</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="n">sc</span><span class="o">.</span><span class="n">gammaln</span><span class="p">(</span><span class="n">x</span><span class="p">))</span>
<span class="go">array([ 0.88622693, 1.77245385, -3.5449077 , 2.3632718 ])</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">sc</span><span class="o">.</span><span class="n">gamma</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
<span class="go">array([ 0.88622693, 1.77245385, -3.5449077 , 2.3632718 ])</span>
</code></pre>
</div>
</div>
</section>
<section id="rgamma">
<input id="rgamma-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<div class="decorator">@wraps(f_raw)</div>
<span class="def">def</span>
<span class="name">rgamma</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="rgamma-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#rgamma"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="rgamma-36"><a href="#rgamma-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
</span><span id="rgamma-37"><a href="#rgamma-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="rgamma-38"><a href="#rgamma-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
</span><span id="rgamma-39"><a href="#rgamma-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
</span><span id="rgamma-40"><a href="#rgamma-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
</span><span id="rgamma-41"><a href="#rgamma-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
</span><span id="rgamma-42"><a href="#rgamma-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="rgamma-43"><a href="#rgamma-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="rgamma-44"><a href="#rgamma-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="rgamma-45"><a href="#rgamma-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="rgamma-46"><a href="#rgamma-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
</span><span id="rgamma-47"><a href="#rgamma-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
</span><span id="rgamma-48"><a href="#rgamma-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="rgamma-49"><a href="#rgamma-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>rgamma(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
<p>rgamma(z, out=None)</p>
<p>Reciprocal of the gamma function.</p>
<p>Defined as \( 1 / \Gamma(z) \), where \( \Gamma \) is the
gamma function. For more on the gamma function see <code><a href="#gamma">gamma</a></code>.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>z</strong> (array_like):
Real or complex valued input</li>
<li><strong>out</strong> (ndarray, optional):
Optional output array for the function results</li>
</ul>
<h6 id="returns">Returns</h6>
<ul>
<li><strong>scalar or ndarray</strong>: Function results</li>
</ul>
<h6 id="see-also">See Also</h6>
<p><code>gamma,</code>, <code>gammaln,</code>, <code>loggamma</code> </p>
<h6 id="notes">Notes</h6>
<p>The gamma function has no zeros and has simple poles at
nonpositive integers, so <code><a href="#rgamma">rgamma</a></code> is an entire function with zeros
at the nonpositive integers. See the discussion in [dlmf]_ for
more details.</p>
<h6 id="references">References</h6>
<p>.. [dlmf] Nist, Digital Library of Mathematical functions,
<a href="https://dlmf.nist.gov/5.2#i">https://dlmf.nist.gov/5.2#i</a></p>
<h6 id="examples">Examples</h6>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">scipy.special</span> <span class="k">as</span> <span class="nn">sc</span>
</code></pre>
</div>
<p>It is the reciprocal of the gamma function.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">sc</span><span class="o">.</span><span class="n">rgamma</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">])</span>
<span class="go">array([1. , 1. , 0.5 , 0.16666667])</span>
<span class="gp">&gt;&gt;&gt; </span><span class="mi">1</span> <span class="o">/</span> <span class="n">sc</span><span class="o">.</span><span class="n">gamma</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">])</span>
<span class="go">array([1. , 1. , 0.5 , 0.16666667])</span>
</code></pre>
</div>
<p>It is zero at nonpositive integers.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">sc</span><span class="o">.</span><span class="n">rgamma</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">2</span><span class="p">,</span> <span class="o">-</span><span class="mi">3</span><span class="p">])</span>
<span class="go">array([0., 0., 0., 0.])</span>
</code></pre>
</div>
<p>It rapidly underflows to zero along the positive real axis.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">sc</span><span class="o">.</span><span class="n">rgamma</span><span class="p">([</span><span class="mi">10</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="mi">179</span><span class="p">])</span>
<span class="go">array([2.75573192e-006, 1.07151029e-156, 0.00000000e+000])</span>
</code></pre>
</div>
</div>
</section>
<section id="multigammaln">
<input id="multigammaln-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<div class="decorator">@wraps(f_raw)</div>
<span class="def">def</span>
<span class="name">multigammaln</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="multigammaln-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#multigammaln"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="multigammaln-36"><a href="#multigammaln-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
</span><span id="multigammaln-37"><a href="#multigammaln-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="multigammaln-38"><a href="#multigammaln-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
</span><span id="multigammaln-39"><a href="#multigammaln-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
</span><span id="multigammaln-40"><a href="#multigammaln-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
</span><span id="multigammaln-41"><a href="#multigammaln-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
</span><span id="multigammaln-42"><a href="#multigammaln-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="multigammaln-43"><a href="#multigammaln-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="multigammaln-44"><a href="#multigammaln-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="multigammaln-45"><a href="#multigammaln-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="multigammaln-46"><a href="#multigammaln-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
</span><span id="multigammaln-47"><a href="#multigammaln-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
</span><span id="multigammaln-48"><a href="#multigammaln-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="multigammaln-49"><a href="#multigammaln-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>Returns the log of multivariate gamma, also sometimes called the
generalized gamma.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>a</strong> (ndarray):
The multivariate gamma is computed for each item of <code>a</code>.</li>
<li><strong>d</strong> (int):
The dimension of the space of integration.</li>
</ul>
<h6 id="returns">Returns</h6>
<ul>
<li><strong>res</strong> (ndarray):
The values of the log multivariate gamma at the given points <code>a</code>.</li>
</ul>
<h6 id="notes">Notes</h6>
<p>The formal definition of the multivariate gamma of dimension d for a real
<code>a</code> is</p>
<p>$$\Gamma_d(a) = \int_{A>0} e^{-tr(A)} |A|^{a - (d+1)/2} dA$$</p>
<p>with the condition \( a &gt; (d-1)/2 \), and \( A &gt; 0 \) being the set of
all the positive definite matrices of dimension <code>d</code>. Note that <code>a</code> is a
scalar: the integrand only is multivariate, the argument is not (the
function is defined over a subset of the real set).</p>
<p>This can be proven to be equal to the much friendlier equation</p>
<p>$$\Gamma_d(a) = \pi^{d(d-1)/4} \prod_{i=1}^{d} \Gamma(a - (i-1)/2).$$</p>
<h6 id="references">References</h6>
<p>R. J. Muirhead, Aspects of multivariate statistical theory (Wiley Series in
probability and mathematical statistics).</p>
<h6 id="examples">Examples</h6>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">multigammaln</span><span class="p">,</span> <span class="n">gammaln</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">a</span> <span class="o">=</span> <span class="mf">23.5</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">d</span> <span class="o">=</span> <span class="mi">10</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">multigammaln</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">d</span><span class="p">)</span>
<span class="go">454.1488605074416</span>
</code></pre>
</div>
<p>Verify that the result agrees with the logarithm of the equation
shown above:</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">d</span><span class="o">*</span><span class="p">(</span><span class="n">d</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">/</span><span class="mi">4</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">pi</span><span class="p">)</span> <span class="o">+</span> <span class="n">gammaln</span><span class="p">(</span><span class="n">a</span> <span class="o">-</span> <span class="mf">0.5</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">d</span><span class="p">))</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
<span class="go">454.1488605074416</span>
</code></pre>
</div>
</div>
</section>
<section id="kn">
<input id="kn-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<div class="decorator">@wraps(f_raw)</div>
<span class="def">def</span>
<span class="name">kn</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="kn-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#kn"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="kn-36"><a href="#kn-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
</span><span id="kn-37"><a href="#kn-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="kn-38"><a href="#kn-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
</span><span id="kn-39"><a href="#kn-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
</span><span id="kn-40"><a href="#kn-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
</span><span id="kn-41"><a href="#kn-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
</span><span id="kn-42"><a href="#kn-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="kn-43"><a href="#kn-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="kn-44"><a href="#kn-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="kn-45"><a href="#kn-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="kn-46"><a href="#kn-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
</span><span id="kn-47"><a href="#kn-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
</span><span id="kn-48"><a href="#kn-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="kn-49"><a href="#kn-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>Modified Bessel function of the second kind of integer order n</p>
</div>
</section>
<section id="j0">
<input id="j0-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<div class="decorator">@wraps(f_raw)</div>
<span class="def">def</span>
<span class="name">j0</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="j0-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#j0"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="j0-36"><a href="#j0-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
</span><span id="j0-37"><a href="#j0-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="j0-38"><a href="#j0-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
</span><span id="j0-39"><a href="#j0-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
</span><span id="j0-40"><a href="#j0-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
</span><span id="j0-41"><a href="#j0-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
</span><span id="j0-42"><a href="#j0-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="j0-43"><a href="#j0-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="j0-44"><a href="#j0-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="j0-45"><a href="#j0-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="j0-46"><a href="#j0-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
</span><span id="j0-47"><a href="#j0-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
</span><span id="j0-48"><a href="#j0-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="j0-49"><a href="#j0-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>j0(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
<p>j0(x, out=None)</p>
<p>Bessel function of the first kind of order 0.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>x</strong> (array_like):
Argument (float).</li>
<li><strong>out</strong> (ndarray, optional):
Optional output array for the function values</li>
</ul>
<h6 id="returns">Returns</h6>
<ul>
<li><strong>J</strong> (scalar or ndarray):
Value of the Bessel function of the first kind of order 0 at <code>x</code>.</li>
</ul>
<h6 id="see-also">See Also</h6>
<p><code>jv</code>: Bessel function of real order and complex argument. <br />
<code>spherical_jn</code>: spherical Bessel functions. </p>
<h6 id="notes">Notes</h6>
<p>The domain is divided into the intervals [0, 5] and (5, infinity). In the
first interval the following rational approximation is used:</p>
<p>$$J_0(x) \approx (w - r_1^2)(w - r_2^2) \frac{P_3(w)}{Q_8(w)},$$</p>
<p>where \( w = x^2 \) and \( r_1 \), \( r_2 \) are the zeros of
\( J_0 \), and \( P_3 \) and \( Q_8 \) are polynomials of degrees 3
and 8, respectively.</p>
<p>In the second interval, the Hankel asymptotic expansion is employed with
two rational functions of degree 6/6 and 7/7.</p>
<p>This function is a wrapper for the Cephes <sup class="footnote-ref" id="fnref-1"><a href="#fn-1">1</a></sup> routine <code><a href="#j0">j0</a></code>.
It should not be confused with the spherical Bessel functions (see
<code>spherical_jn</code>).</p>
<h6 id="references">References</h6>
<h6 id="examples">Examples</h6>
<p>Calculate the function at one point:</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">j0</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">j0</span><span class="p">(</span><span class="mf">1.</span><span class="p">)</span>
<span class="go">0.7651976865579665</span>
</code></pre>
</div>
<p>Calculate the function at several points:</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">j0</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="o">-</span><span class="mf">2.</span><span class="p">,</span> <span class="mf">0.</span><span class="p">,</span> <span class="mf">4.</span><span class="p">]))</span>
<span class="go">array([ 0.22389078, 1. , -0.39714981])</span>
</code></pre>
</div>
<p>Plot the function from -20 to 20.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="o">-</span><span class="mf">20.</span><span class="p">,</span> <span class="mf">20.</span><span class="p">,</span> <span class="mi">1000</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">y</span> <span class="o">=</span> <span class="n">j0</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</code></pre>
</div>
<div class="footnotes">
<hr />
<ol>
<li id="fn-1">
<p>Cephes Mathematical Functions Library,
<a href="http://www.netlib.org/cephes/">http://www.netlib.org/cephes/</a>&#160;<a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 1 in the text.">&#8617;</a></p>
</li>
</ol>
</div>
</div>
</section>
<section id="y0">
<input id="y0-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<div class="decorator">@wraps(f_raw)</div>
<span class="def">def</span>
<span class="name">y0</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="y0-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#y0"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="y0-36"><a href="#y0-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
</span><span id="y0-37"><a href="#y0-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="y0-38"><a href="#y0-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
</span><span id="y0-39"><a href="#y0-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
</span><span id="y0-40"><a href="#y0-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
</span><span id="y0-41"><a href="#y0-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
</span><span id="y0-42"><a href="#y0-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="y0-43"><a href="#y0-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="y0-44"><a href="#y0-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="y0-45"><a href="#y0-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="y0-46"><a href="#y0-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
</span><span id="y0-47"><a href="#y0-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
</span><span id="y0-48"><a href="#y0-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="y0-49"><a href="#y0-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>y0(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
<p>y0(x, out=None)</p>
<p>Bessel function of the second kind of order 0.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>x</strong> (array_like):
Argument (float).</li>
<li><strong>out</strong> (ndarray, optional):
Optional output array for the function results</li>
</ul>
<h6 id="returns">Returns</h6>
<ul>
<li><strong>Y</strong> (scalar or ndarray):
Value of the Bessel function of the second kind of order 0 at <code>x</code>.</li>
</ul>
<h6 id="see-also">See Also</h6>
<p><code><a href="#j0">j0</a></code>: Bessel function of the first kind of order 0 <br />
<code>yv</code>: Bessel function of the first kind </p>
<h6 id="notes">Notes</h6>
<p>The domain is divided into the intervals [0, 5] and (5, infinity). In the
first interval a rational approximation \( R(x) \) is employed to
compute,</p>
<p>$$Y_0(x) = R(x) + \frac{2 \log(x) J_0(x)}{\pi},$$</p>
<p>where \( J_0 \) is the Bessel function of the first kind of order 0.</p>
<p>In the second interval, the Hankel asymptotic expansion is employed with
two rational functions of degree 6/6 and 7/7.</p>
<p>This function is a wrapper for the Cephes <sup class="footnote-ref" id="fnref-1"><a href="#fn-1">1</a></sup> routine <code><a href="#y0">y0</a></code>.</p>
<h6 id="references">References</h6>
<h6 id="examples">Examples</h6>
<p>Calculate the function at one point:</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">y0</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">y0</span><span class="p">(</span><span class="mf">1.</span><span class="p">)</span>
<span class="go">0.08825696421567697</span>
</code></pre>
</div>
<p>Calculate at several points:</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">y0</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="mf">0.5</span><span class="p">,</span> <span class="mf">2.</span><span class="p">,</span> <span class="mf">3.</span><span class="p">]))</span>
<span class="go">array([-0.44451873, 0.51037567, 0.37685001])</span>
</code></pre>
</div>
<p>Plot the function from 0 to 10.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mf">0.</span><span class="p">,</span> <span class="mf">10.</span><span class="p">,</span> <span class="mi">1000</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">y</span> <span class="o">=</span> <span class="n">y0</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</code></pre>
</div>
<div class="footnotes">
<hr />
<ol>
<li id="fn-1">
<p>Cephes Mathematical Functions Library,
<a href="http://www.netlib.org/cephes/">http://www.netlib.org/cephes/</a>&#160;<a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 1 in the text.">&#8617;</a></p>
</li>
</ol>
</div>
</div>
</section>
<section id="j1">
<input id="j1-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<div class="decorator">@wraps(f_raw)</div>
<span class="def">def</span>
<span class="name">j1</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="j1-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#j1"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="j1-36"><a href="#j1-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
</span><span id="j1-37"><a href="#j1-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="j1-38"><a href="#j1-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
</span><span id="j1-39"><a href="#j1-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
</span><span id="j1-40"><a href="#j1-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
</span><span id="j1-41"><a href="#j1-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
</span><span id="j1-42"><a href="#j1-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="j1-43"><a href="#j1-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="j1-44"><a href="#j1-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="j1-45"><a href="#j1-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="j1-46"><a href="#j1-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
</span><span id="j1-47"><a href="#j1-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
</span><span id="j1-48"><a href="#j1-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="j1-49"><a href="#j1-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>j1(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
<p>j1(x, out=None)</p>
<p>Bessel function of the first kind of order 1.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>x</strong> (array_like):
Argument (float).</li>
<li><strong>out</strong> (ndarray, optional):
Optional output array for the function values</li>
</ul>
<h6 id="returns">Returns</h6>
<ul>
<li><strong>J</strong> (scalar or ndarray):
Value of the Bessel function of the first kind of order 1 at <code>x</code>.</li>
</ul>
<h6 id="see-also">See Also</h6>
<p><code>jv</code>: Bessel function of the first kind <br />
<code>spherical_jn</code>: spherical Bessel functions. </p>
<h6 id="notes">Notes</h6>
<p>The domain is divided into the intervals [0, 8] and (8, infinity). In the
first interval a 24 term Chebyshev expansion is used. In the second, the
asymptotic trigonometric representation is employed using two rational
functions of degree 5/5.</p>
<p>This function is a wrapper for the Cephes <sup class="footnote-ref" id="fnref-1"><a href="#fn-1">1</a></sup> routine <code><a href="#j1">j1</a></code>.
It should not be confused with the spherical Bessel functions (see
<code>spherical_jn</code>).</p>
<h6 id="references">References</h6>
<h6 id="examples">Examples</h6>
<p>Calculate the function at one point:</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">j1</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">j1</span><span class="p">(</span><span class="mf">1.</span><span class="p">)</span>
<span class="go">0.44005058574493355</span>
</code></pre>
</div>
<p>Calculate the function at several points:</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">j1</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="o">-</span><span class="mf">2.</span><span class="p">,</span> <span class="mf">0.</span><span class="p">,</span> <span class="mf">4.</span><span class="p">]))</span>
<span class="go">array([-0.57672481, 0. , -0.06604333])</span>
</code></pre>
</div>
<p>Plot the function from -20 to 20.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="o">-</span><span class="mf">20.</span><span class="p">,</span> <span class="mf">20.</span><span class="p">,</span> <span class="mi">1000</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">y</span> <span class="o">=</span> <span class="n">j1</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</code></pre>
</div>
<div class="footnotes">
<hr />
<ol>
<li id="fn-1">
<p>Cephes Mathematical Functions Library,
<a href="http://www.netlib.org/cephes/">http://www.netlib.org/cephes/</a>&#160;<a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 1 in the text.">&#8617;</a></p>
</li>
</ol>
</div>
</div>
</section>
<section id="y1">
<input id="y1-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<div class="decorator">@wraps(f_raw)</div>
<span class="def">def</span>
<span class="name">y1</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="y1-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#y1"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="y1-36"><a href="#y1-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
</span><span id="y1-37"><a href="#y1-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="y1-38"><a href="#y1-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
</span><span id="y1-39"><a href="#y1-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
</span><span id="y1-40"><a href="#y1-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
</span><span id="y1-41"><a href="#y1-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
</span><span id="y1-42"><a href="#y1-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="y1-43"><a href="#y1-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="y1-44"><a href="#y1-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="y1-45"><a href="#y1-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="y1-46"><a href="#y1-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
</span><span id="y1-47"><a href="#y1-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
</span><span id="y1-48"><a href="#y1-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="y1-49"><a href="#y1-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>y1(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
<p>y1(x, out=None)</p>
<p>Bessel function of the second kind of order 1.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>x</strong> (array_like):
Argument (float).</li>
<li><strong>out</strong> (ndarray, optional):
Optional output array for the function results</li>
</ul>
<h6 id="returns">Returns</h6>
<ul>
<li><strong>Y</strong> (scalar or ndarray):
Value of the Bessel function of the second kind of order 1 at <code>x</code>.</li>
</ul>
<h6 id="see-also">See Also</h6>
<p><code><a href="#j1">j1</a></code>: Bessel function of the first kind of order 1 <br />
<code><a href="#yn">yn</a></code>: Bessel function of the second kind <br />
<code>yv</code>: Bessel function of the second kind </p>
<h6 id="notes">Notes</h6>
<p>The domain is divided into the intervals [0, 8] and (8, infinity). In the
first interval a 25 term Chebyshev expansion is used, and computing
\( J_1 \) (the Bessel function of the first kind) is required. In the
second, the asymptotic trigonometric representation is employed using two
rational functions of degree 5/5.</p>
<p>This function is a wrapper for the Cephes <sup class="footnote-ref" id="fnref-1"><a href="#fn-1">1</a></sup> routine <code><a href="#y1">y1</a></code>.</p>
<h6 id="references">References</h6>
<h6 id="examples">Examples</h6>
<p>Calculate the function at one point:</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">y1</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">y1</span><span class="p">(</span><span class="mf">1.</span><span class="p">)</span>
<span class="go">-0.7812128213002888</span>
</code></pre>
</div>
<p>Calculate at several points:</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">y1</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="mf">0.5</span><span class="p">,</span> <span class="mf">2.</span><span class="p">,</span> <span class="mf">3.</span><span class="p">]))</span>
<span class="go">array([-1.47147239, -0.10703243, 0.32467442])</span>
</code></pre>
</div>
<p>Plot the function from 0 to 10.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mf">0.</span><span class="p">,</span> <span class="mf">10.</span><span class="p">,</span> <span class="mi">1000</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">y</span> <span class="o">=</span> <span class="n">y1</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</code></pre>
</div>
<div class="footnotes">
<hr />
<ol>
<li id="fn-1">
<p>Cephes Mathematical Functions Library,
<a href="http://www.netlib.org/cephes/">http://www.netlib.org/cephes/</a>&#160;<a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 1 in the text.">&#8617;</a></p>
</li>
</ol>
</div>
</div>
</section>
<section id="jn">
<input id="jn-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<div class="decorator">@wraps(f_raw)</div>
<span class="def">def</span>
<span class="name">jn</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="jn-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#jn"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="jn-36"><a href="#jn-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
</span><span id="jn-37"><a href="#jn-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="jn-38"><a href="#jn-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
</span><span id="jn-39"><a href="#jn-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
</span><span id="jn-40"><a href="#jn-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
</span><span id="jn-41"><a href="#jn-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
</span><span id="jn-42"><a href="#jn-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="jn-43"><a href="#jn-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="jn-44"><a href="#jn-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="jn-45"><a href="#jn-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="jn-46"><a href="#jn-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
</span><span id="jn-47"><a href="#jn-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
</span><span id="jn-48"><a href="#jn-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="jn-49"><a href="#jn-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>jv(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
<p>jv(v, z, out=None)</p>
<p>Bessel function of the first kind of real order and complex argument.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>v</strong> (array_like):
Order (float).</li>
<li><strong>z</strong> (array_like):
Argument (float or complex).</li>
<li><strong>out</strong> (ndarray, optional):
Optional output array for the function values</li>
</ul>
<h6 id="returns">Returns</h6>
<ul>
<li><strong>J</strong> (scalar or ndarray):
Value of the Bessel function, \( J_v(z) \).</li>
</ul>
<h6 id="see-also">See Also</h6>
<p><code>jve</code>: \( J_v \) with leading exponential behavior stripped off. <br />
<code>spherical_jn</code>: spherical Bessel functions. <br />
<code><a href="#j0">j0</a></code>: faster version of this function for order 0. <br />
<code><a href="#j1">j1</a></code>: faster version of this function for order 1. </p>
<h6 id="notes">Notes</h6>
<p>For positive <code>v</code> values, the computation is carried out using the AMOS
<sup class="footnote-ref" id="fnref-1"><a href="#fn-1">1</a></sup> <code>zbesj</code> routine, which exploits the connection to the modified
Bessel function \( I_v \),</p>
<p>$$J_v(z) = \exp(v\pi\imath/2) I_v(-\imath z)\qquad (\Im z &gt; 0)</p>
<p>J_v(z) = \exp(-v\pi\imath/2) I_v(\imath z)\qquad (\Im z &lt; 0)$$</p>
<p>For negative <code>v</code> values the formula,</p>
<p>$$J_{-v}(z) = J_v(z) \cos(\pi v) - Y_v(z) \sin(\pi v)$$</p>
<p>is used, where \( Y_v(z) \) is the Bessel function of the second
kind, computed using the AMOS routine <code>zbesy</code>. Note that the second
term is exactly zero for integer <code>v</code>; to improve accuracy the second
term is explicitly omitted for <code>v</code> values such that <code>v = floor(v)</code>.</p>
<p>Not to be confused with the spherical Bessel functions (see <code>spherical_jn</code>).</p>
<h6 id="references">References</h6>
<h6 id="examples">Examples</h6>
<p>Evaluate the function of order 0 at one point.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">jv</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">jv</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mf">1.</span><span class="p">)</span>
<span class="go">0.7651976865579666</span>
</code></pre>
</div>
<p>Evaluate the function at one point for different orders.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">jv</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mf">1.</span><span class="p">),</span> <span class="n">jv</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mf">1.</span><span class="p">),</span> <span class="n">jv</span><span class="p">(</span><span class="mf">1.5</span><span class="p">,</span> <span class="mf">1.</span><span class="p">)</span>
<span class="go">(0.7651976865579666, 0.44005058574493355, 0.24029783912342725)</span>
</code></pre>
</div>
<p>The evaluation for different orders can be carried out in one call by
providing a list or NumPy array as argument for the <code>v</code> parameter:</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">jv</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mf">1.5</span><span class="p">],</span> <span class="mf">1.</span><span class="p">)</span>
<span class="go">array([0.76519769, 0.44005059, 0.24029784])</span>
</code></pre>
</div>
<p>Evaluate the function at several points for order 0 by providing an
array for <code>z</code>.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">points</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="o">-</span><span class="mf">2.</span><span class="p">,</span> <span class="mf">0.</span><span class="p">,</span> <span class="mf">3.</span><span class="p">])</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">jv</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">points</span><span class="p">)</span>
<span class="go">array([ 0.22389078, 1. , -0.26005195])</span>
</code></pre>
</div>
<p>If <code>z</code> is an array, the order parameter <code>v</code> must be broadcastable to
the correct shape if different orders shall be computed in one call.
To calculate the orders 0 and 1 for an 1D array:</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">orders</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="mi">0</span><span class="p">],</span> <span class="p">[</span><span class="mi">1</span><span class="p">]])</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">orders</span><span class="o">.</span><span class="n">shape</span>
<span class="go">(2, 1)</span>
</code></pre>
</div>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">jv</span><span class="p">(</span><span class="n">orders</span><span class="p">,</span> <span class="n">points</span><span class="p">)</span>
<span class="go">array([[ 0.22389078, 1. , -0.26005195],</span>
<span class="go"> [-0.57672481, 0. , 0.33905896]])</span>
</code></pre>
</div>
<p>Plot the functions of order 0 to 3 from -10 to 10.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="o">-</span><span class="mf">10.</span><span class="p">,</span> <span class="mf">10.</span><span class="p">,</span> <span class="mi">1000</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">4</span><span class="p">):</span>
<span class="gp">... </span> <span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">jv</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">x</span><span class="p">),</span> <span class="n">label</span><span class="o">=</span><span class="sa">f</span><span class="s1">&#39;$J_</span><span class="si">{</span><span class="n">i</span><span class="si">!r}</span><span class="s1">$&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ax</span><span class="o">.</span><span class="n">legend</span><span class="p">()</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</code></pre>
</div>
<div class="footnotes">
<hr />
<ol>
<li id="fn-1">
<p>Donald E. Amos, "AMOS, A Portable Package for Bessel Functions
of a Complex Argument and Nonnegative Order",
<a href="http://netlib.org/amos/">http://netlib.org/amos/</a>&#160;<a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 1 in the text.">&#8617;</a></p>
</li>
</ol>
</div>
</div>
</section>
<section id="yn">
<input id="yn-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<div class="decorator">@wraps(f_raw)</div>
<span class="def">def</span>
<span class="name">yn</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="yn-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#yn"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="yn-36"><a href="#yn-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
</span><span id="yn-37"><a href="#yn-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="yn-38"><a href="#yn-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
</span><span id="yn-39"><a href="#yn-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
</span><span id="yn-40"><a href="#yn-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
</span><span id="yn-41"><a href="#yn-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
</span><span id="yn-42"><a href="#yn-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="yn-43"><a href="#yn-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="yn-44"><a href="#yn-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="yn-45"><a href="#yn-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="yn-46"><a href="#yn-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
</span><span id="yn-47"><a href="#yn-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
</span><span id="yn-48"><a href="#yn-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="yn-49"><a href="#yn-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>yn(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
<p>yn(n, x, out=None)</p>
<p>Bessel function of the second kind of integer order and real argument.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>n</strong> (array_like):
Order (integer).</li>
<li><strong>x</strong> (array_like):
Argument (float).</li>
<li><strong>out</strong> (ndarray, optional):
Optional output array for the function results</li>
</ul>
<h6 id="returns">Returns</h6>
<ul>
<li><strong>Y</strong> (scalar or ndarray):
Value of the Bessel function, \( Y_n(x) \).</li>
</ul>
<h6 id="see-also">See Also</h6>
<p><code>yv</code>: For real order and real or complex argument. <br />
<code><a href="#y0">y0</a></code>: faster implementation of this function for order 0 <br />
<code><a href="#y1">y1</a></code>: faster implementation of this function for order 1 </p>
<h6 id="notes">Notes</h6>
<p>Wrapper for the Cephes <sup class="footnote-ref" id="fnref-1"><a href="#fn-1">1</a></sup> routine <code><a href="#yn">yn</a></code>.</p>
<p>The function is evaluated by forward recurrence on <code>n</code>, starting with
values computed by the Cephes routines <code><a href="#y0">y0</a></code> and <code><a href="#y1">y1</a></code>. If <code>n = 0</code> or 1,
the routine for <code><a href="#y0">y0</a></code> or <code><a href="#y1">y1</a></code> is called directly.</p>
<h6 id="references">References</h6>
<h6 id="examples">Examples</h6>
<p>Evaluate the function of order 0 at one point.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">yn</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">yn</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mf">1.</span><span class="p">)</span>
<span class="go">0.08825696421567697</span>
</code></pre>
</div>
<p>Evaluate the function at one point for different orders.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">yn</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mf">1.</span><span class="p">),</span> <span class="n">yn</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mf">1.</span><span class="p">),</span> <span class="n">yn</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mf">1.</span><span class="p">)</span>
<span class="go">(0.08825696421567697, -0.7812128213002888, -1.6506826068162546)</span>
</code></pre>
</div>
<p>The evaluation for different orders can be carried out in one call by
providing a list or NumPy array as argument for the <code>v</code> parameter:</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">yn</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">],</span> <span class="mf">1.</span><span class="p">)</span>
<span class="go">array([ 0.08825696, -0.78121282, -1.65068261])</span>
</code></pre>
</div>
<p>Evaluate the function at several points for order 0 by providing an
array for <code>z</code>.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">points</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="mf">0.5</span><span class="p">,</span> <span class="mf">3.</span><span class="p">,</span> <span class="mf">8.</span><span class="p">])</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">yn</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">points</span><span class="p">)</span>
<span class="go">array([-0.44451873, 0.37685001, 0.22352149])</span>
</code></pre>
</div>
<p>If <code>z</code> is an array, the order parameter <code>v</code> must be broadcastable to
the correct shape if different orders shall be computed in one call.
To calculate the orders 0 and 1 for an 1D array:</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">orders</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="mi">0</span><span class="p">],</span> <span class="p">[</span><span class="mi">1</span><span class="p">]])</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">orders</span><span class="o">.</span><span class="n">shape</span>
<span class="go">(2, 1)</span>
</code></pre>
</div>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">yn</span><span class="p">(</span><span class="n">orders</span><span class="p">,</span> <span class="n">points</span><span class="p">)</span>
<span class="go">array([[-0.44451873, 0.37685001, 0.22352149],</span>
<span class="go"> [-1.47147239, 0.32467442, -0.15806046]])</span>
</code></pre>
</div>
<p>Plot the functions of order 0 to 3 from 0 to 10.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mf">0.</span><span class="p">,</span> <span class="mf">10.</span><span class="p">,</span> <span class="mi">1000</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">4</span><span class="p">):</span>
<span class="gp">... </span> <span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">yn</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">x</span><span class="p">),</span> <span class="n">label</span><span class="o">=</span><span class="sa">f</span><span class="s1">&#39;$Y_</span><span class="si">{</span><span class="n">i</span><span class="si">!r}</span><span class="s1">$&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ax</span><span class="o">.</span><span class="n">set_ylim</span><span class="p">(</span><span class="o">-</span><span class="mi">3</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ax</span><span class="o">.</span><span class="n">legend</span><span class="p">()</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</code></pre>
</div>
<div class="footnotes">
<hr />
<ol>
<li id="fn-1">
<p>Cephes Mathematical Functions Library,
<a href="http://www.netlib.org/cephes/">http://www.netlib.org/cephes/</a>&#160;<a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 1 in the text.">&#8617;</a></p>
</li>
</ol>
</div>
</div>
</section>
<section id="i0">
<input id="i0-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<div class="decorator">@wraps(f_raw)</div>
<span class="def">def</span>
<span class="name">i0</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="i0-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#i0"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="i0-36"><a href="#i0-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
</span><span id="i0-37"><a href="#i0-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="i0-38"><a href="#i0-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
</span><span id="i0-39"><a href="#i0-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
</span><span id="i0-40"><a href="#i0-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
</span><span id="i0-41"><a href="#i0-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
</span><span id="i0-42"><a href="#i0-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="i0-43"><a href="#i0-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="i0-44"><a href="#i0-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="i0-45"><a href="#i0-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="i0-46"><a href="#i0-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
</span><span id="i0-47"><a href="#i0-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
</span><span id="i0-48"><a href="#i0-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="i0-49"><a href="#i0-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>i0(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
<p>i0(x, out=None)</p>
<p>Modified Bessel function of order 0.</p>
<p>Defined as,</p>
<p>$$I_0(x) = \sum_{k=0}^\infty \frac{(x^2/4)^k}{(k!)^2} = J_0(\imath x),$$</p>
<p>where \( J_0 \) is the Bessel function of the first kind of order 0.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>x</strong> (array_like):
Argument (float)</li>
<li><strong>out</strong> (ndarray, optional):
Optional output array for the function values</li>
</ul>
<h6 id="returns">Returns</h6>
<ul>
<li><strong>I</strong> (scalar or ndarray):
Value of the modified Bessel function of order 0 at <code>x</code>.</li>
</ul>
<h6 id="see-also">See Also</h6>
<p><code><a href="#iv">iv</a></code>: Modified Bessel function of any order <br />
<code>i0e</code>: Exponentially scaled modified Bessel function of order 0 </p>
<h6 id="notes">Notes</h6>
<p>The range is partitioned into the two intervals [0, 8] and (8, infinity).
Chebyshev polynomial expansions are employed in each interval.</p>
<p>This function is a wrapper for the Cephes <sup class="footnote-ref" id="fnref-1"><a href="#fn-1">1</a></sup> routine <code><a href="#i0">i0</a></code>.</p>
<h6 id="references">References</h6>
<h6 id="examples">Examples</h6>
<p>Calculate the function at one point:</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">i0</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">i0</span><span class="p">(</span><span class="mf">1.</span><span class="p">)</span>
<span class="go">1.2660658777520082</span>
</code></pre>
</div>
<p>Calculate at several points:</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">i0</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="o">-</span><span class="mf">2.</span><span class="p">,</span> <span class="mf">0.</span><span class="p">,</span> <span class="mf">3.5</span><span class="p">]))</span>
<span class="go">array([2.2795853 , 1. , 7.37820343])</span>
</code></pre>
</div>
<p>Plot the function from -10 to 10.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="o">-</span><span class="mf">10.</span><span class="p">,</span> <span class="mf">10.</span><span class="p">,</span> <span class="mi">1000</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">y</span> <span class="o">=</span> <span class="n">i0</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</code></pre>
</div>
<div class="footnotes">
<hr />
<ol>
<li id="fn-1">
<p>Cephes Mathematical Functions Library,
<a href="http://www.netlib.org/cephes/">http://www.netlib.org/cephes/</a>&#160;<a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 1 in the text.">&#8617;</a></p>
</li>
</ol>
</div>
</div>
</section>
<section id="i1">
<input id="i1-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<div class="decorator">@wraps(f_raw)</div>
<span class="def">def</span>
<span class="name">i1</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="i1-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#i1"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="i1-36"><a href="#i1-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
</span><span id="i1-37"><a href="#i1-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="i1-38"><a href="#i1-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
</span><span id="i1-39"><a href="#i1-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
</span><span id="i1-40"><a href="#i1-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
</span><span id="i1-41"><a href="#i1-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
</span><span id="i1-42"><a href="#i1-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="i1-43"><a href="#i1-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="i1-44"><a href="#i1-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="i1-45"><a href="#i1-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="i1-46"><a href="#i1-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
</span><span id="i1-47"><a href="#i1-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
</span><span id="i1-48"><a href="#i1-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="i1-49"><a href="#i1-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>i1(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
<p>i1(x, out=None)</p>
<p>Modified Bessel function of order 1.</p>
<p>Defined as,</p>
<p>$$I_1(x) = \frac{1}{2}x \sum_{k=0}^\infty \frac{(x^2/4)^k}{k! (k + 1)!}
= -\imath J_1(\imath x),$$</p>
<p>where \( J_1 \) is the Bessel function of the first kind of order 1.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>x</strong> (array_like):
Argument (float)</li>
<li><strong>out</strong> (ndarray, optional):
Optional output array for the function values</li>
</ul>
<h6 id="returns">Returns</h6>
<ul>
<li><strong>I</strong> (scalar or ndarray):
Value of the modified Bessel function of order 1 at <code>x</code>.</li>
</ul>
<h6 id="see-also">See Also</h6>
<p><code><a href="#iv">iv</a></code>: Modified Bessel function of the first kind <br />
<code>i1e</code>: Exponentially scaled modified Bessel function of order 1 </p>
<h6 id="notes">Notes</h6>
<p>The range is partitioned into the two intervals [0, 8] and (8, infinity).
Chebyshev polynomial expansions are employed in each interval.</p>
<p>This function is a wrapper for the Cephes <sup class="footnote-ref" id="fnref-1"><a href="#fn-1">1</a></sup> routine <code><a href="#i1">i1</a></code>.</p>
<h6 id="references">References</h6>
<h6 id="examples">Examples</h6>
<p>Calculate the function at one point:</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">i1</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">i1</span><span class="p">(</span><span class="mf">1.</span><span class="p">)</span>
<span class="go">0.5651591039924851</span>
</code></pre>
</div>
<p>Calculate the function at several points:</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">i1</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="o">-</span><span class="mf">2.</span><span class="p">,</span> <span class="mf">0.</span><span class="p">,</span> <span class="mf">6.</span><span class="p">]))</span>
<span class="go">array([-1.59063685, 0. , 61.34193678])</span>
</code></pre>
</div>
<p>Plot the function between -10 and 10.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="o">-</span><span class="mf">10.</span><span class="p">,</span> <span class="mf">10.</span><span class="p">,</span> <span class="mi">1000</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">y</span> <span class="o">=</span> <span class="n">i1</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</code></pre>
</div>
<div class="footnotes">
<hr />
<ol>
<li id="fn-1">
<p>Cephes Mathematical Functions Library,
<a href="http://www.netlib.org/cephes/">http://www.netlib.org/cephes/</a>&#160;<a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 1 in the text.">&#8617;</a></p>
</li>
</ol>
</div>
</div>
</section>
<section id="iv">
<input id="iv-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<div class="decorator">@wraps(f_raw)</div>
<span class="def">def</span>
<span class="name">iv</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="iv-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#iv"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="iv-36"><a href="#iv-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
</span><span id="iv-37"><a href="#iv-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="iv-38"><a href="#iv-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
</span><span id="iv-39"><a href="#iv-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
</span><span id="iv-40"><a href="#iv-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
</span><span id="iv-41"><a href="#iv-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
</span><span id="iv-42"><a href="#iv-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="iv-43"><a href="#iv-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="iv-44"><a href="#iv-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="iv-45"><a href="#iv-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="iv-46"><a href="#iv-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
</span><span id="iv-47"><a href="#iv-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
</span><span id="iv-48"><a href="#iv-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="iv-49"><a href="#iv-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>iv(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
<p>iv(v, z, out=None)</p>
<p>Modified Bessel function of the first kind of real order.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>v</strong> (array_like):
Order. If <code>z</code> is of real type and negative, <code>v</code> must be integer
valued.</li>
<li><strong>z</strong> (array_like of float or complex):
Argument.</li>
<li><strong>out</strong> (ndarray, optional):
Optional output array for the function values</li>
</ul>
<h6 id="returns">Returns</h6>
<ul>
<li><strong>scalar or ndarray</strong>: Values of the modified Bessel function.</li>
</ul>
<h6 id="see-also">See Also</h6>
<p><code><a href="#ive">ive</a></code>: This function with leading exponential behavior stripped off. <br />
<code><a href="#i0">i0</a></code>: Faster version of this function for order 0. <br />
<code><a href="#i1">i1</a></code>: Faster version of this function for order 1. </p>
<h6 id="notes">Notes</h6>
<p>For real <code>z</code> and \( v \in [-50, 50] \), the evaluation is carried out
using Temme's method <sup class="footnote-ref" id="fnref-1"><a href="#fn-1">1</a></sup>. For larger orders, uniform asymptotic
expansions are applied.</p>
<p>For complex <code>z</code> and positive <code>v</code>, the AMOS <sup class="footnote-ref" id="fnref-2"><a href="#fn-2">2</a></sup> <code>zbesi</code> routine is
called. It uses a power series for small <code>z</code>, the asymptotic expansion
for large <code>abs(z)</code>, the Miller algorithm normalized by the Wronskian
and a Neumann series for intermediate magnitudes, and the uniform
asymptotic expansions for \( I_v(z) \) and \( J_v(z) \) for large
orders. Backward recurrence is used to generate sequences or reduce
orders when necessary.</p>
<p>The calculations above are done in the right half plane and continued
into the left half plane by the formula,</p>
<p>$$I_v(z \exp(\pm\imath\pi)) = \exp(\pm\pi v) I_v(z)$$</p>
<p>(valid when the real part of <code>z</code> is positive). For negative <code>v</code>, the
formula</p>
<p>$$I_{-v}(z) = I_v(z) + \frac{2}{\pi} \sin(\pi v) K_v(z)$$</p>
<p>is used, where \( K_v(z) \) is the modified Bessel function of the
second kind, evaluated using the AMOS routine <code>zbesk</code>.</p>
<h6 id="references">References</h6>
<h6 id="examples">Examples</h6>
<p>Evaluate the function of order 0 at one point.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">iv</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">iv</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mf">1.</span><span class="p">)</span>
<span class="go">1.2660658777520084</span>
</code></pre>
</div>
<p>Evaluate the function at one point for different orders.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">iv</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mf">1.</span><span class="p">),</span> <span class="n">iv</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mf">1.</span><span class="p">),</span> <span class="n">iv</span><span class="p">(</span><span class="mf">1.5</span><span class="p">,</span> <span class="mf">1.</span><span class="p">)</span>
<span class="go">(1.2660658777520084, 0.565159103992485, 0.2935253263474798)</span>
</code></pre>
</div>
<p>The evaluation for different orders can be carried out in one call by
providing a list or NumPy array as argument for the <code>v</code> parameter:</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">iv</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mf">1.5</span><span class="p">],</span> <span class="mf">1.</span><span class="p">)</span>
<span class="go">array([1.26606588, 0.5651591 , 0.29352533])</span>
</code></pre>
</div>
<p>Evaluate the function at several points for order 0 by providing an
array for <code>z</code>.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">points</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="o">-</span><span class="mf">2.</span><span class="p">,</span> <span class="mf">0.</span><span class="p">,</span> <span class="mf">3.</span><span class="p">])</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">iv</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">points</span><span class="p">)</span>
<span class="go">array([2.2795853 , 1. , 4.88079259])</span>
</code></pre>
</div>
<p>If <code>z</code> is an array, the order parameter <code>v</code> must be broadcastable to
the correct shape if different orders shall be computed in one call.
To calculate the orders 0 and 1 for an 1D array:</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">orders</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="mi">0</span><span class="p">],</span> <span class="p">[</span><span class="mi">1</span><span class="p">]])</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">orders</span><span class="o">.</span><span class="n">shape</span>
<span class="go">(2, 1)</span>
</code></pre>
</div>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">iv</span><span class="p">(</span><span class="n">orders</span><span class="p">,</span> <span class="n">points</span><span class="p">)</span>
<span class="go">array([[ 2.2795853 , 1. , 4.88079259],</span>
<span class="go"> [-1.59063685, 0. , 3.95337022]])</span>
</code></pre>
</div>
<p>Plot the functions of order 0 to 3 from -5 to 5.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="o">-</span><span class="mf">5.</span><span class="p">,</span> <span class="mf">5.</span><span class="p">,</span> <span class="mi">1000</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">4</span><span class="p">):</span>
<span class="gp">... </span> <span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">iv</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">x</span><span class="p">),</span> <span class="n">label</span><span class="o">=</span><span class="sa">f</span><span class="s1">&#39;$I_</span><span class="si">{</span><span class="n">i</span><span class="si">!r}</span><span class="s1">$&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ax</span><span class="o">.</span><span class="n">legend</span><span class="p">()</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</code></pre>
</div>
<div class="footnotes">
<hr />
<ol>
<li id="fn-1">
<p>Temme, Journal of Computational Physics, vol 21, 343 (1976)&#160;<a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 1 in the text.">&#8617;</a></p>
</li>
<li id="fn-2">
<p>Donald E. Amos, "AMOS, A Portable Package for Bessel Functions
of a Complex Argument and Nonnegative Order",
<a href="http://netlib.org/amos/">http://netlib.org/amos/</a>&#160;<a href="#fnref-2" class="footnoteBackLink" title="Jump back to footnote 2 in the text.">&#8617;</a></p>
</li>
</ol>
</div>
</div>
</section>
<section id="ive">
<input id="ive-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<div class="decorator">@wraps(f_raw)</div>
<span class="def">def</span>
<span class="name">ive</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="ive-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#ive"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="ive-36"><a href="#ive-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
</span><span id="ive-37"><a href="#ive-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="ive-38"><a href="#ive-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
</span><span id="ive-39"><a href="#ive-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
</span><span id="ive-40"><a href="#ive-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
</span><span id="ive-41"><a href="#ive-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
</span><span id="ive-42"><a href="#ive-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="ive-43"><a href="#ive-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="ive-44"><a href="#ive-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="ive-45"><a href="#ive-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="ive-46"><a href="#ive-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
</span><span id="ive-47"><a href="#ive-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
</span><span id="ive-48"><a href="#ive-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="ive-49"><a href="#ive-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>ive(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
<p>ive(v, z, out=None)</p>
<p>Exponentially scaled modified Bessel function of the first kind.</p>
<p>Defined as::</p>
<pre><code>ive(v, z) = iv(v, z) * exp(-abs(z.real))
</code></pre>
<p>For imaginary numbers without a real part, returns the unscaled
Bessel function of the first kind <code><a href="#iv">iv</a></code>.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>v</strong> (array_like of float):
Order.</li>
<li><strong>z</strong> (array_like of float or complex):
Argument.</li>
<li><strong>out</strong> (ndarray, optional):
Optional output array for the function values</li>
</ul>
<h6 id="returns">Returns</h6>
<ul>
<li><strong>scalar or ndarray</strong>: Values of the exponentially scaled modified Bessel function.</li>
</ul>
<h6 id="see-also">See Also</h6>
<p><code><a href="#iv">iv</a></code>: Modified Bessel function of the first kind <br />
<code>i0e</code>: Faster implementation of this function for order 0 <br />
<code>i1e</code>: Faster implementation of this function for order 1 </p>
<h6 id="notes">Notes</h6>
<p>For positive <code>v</code>, the AMOS <sup class="footnote-ref" id="fnref-1"><a href="#fn-1">1</a></sup> <code>zbesi</code> routine is called. It uses a
power series for small <code>z</code>, the asymptotic expansion for large
<code>abs(z)</code>, the Miller algorithm normalized by the Wronskian and a
Neumann series for intermediate magnitudes, and the uniform asymptotic
expansions for \( I_v(z) \) and \( J_v(z) \) for large orders.
Backward recurrence is used to generate sequences or reduce orders when
necessary.</p>
<p>The calculations above are done in the right half plane and continued
into the left half plane by the formula,</p>
<p>$$I_v(z \exp(\pm\imath\pi)) = \exp(\pm\pi v) I_v(z)$$</p>
<p>(valid when the real part of <code>z</code> is positive). For negative <code>v</code>, the
formula</p>
<p>$$I_{-v}(z) = I_v(z) + \frac{2}{\pi} \sin(\pi v) K_v(z)$$</p>
<p>is used, where \( K_v(z) \) is the modified Bessel function of the
second kind, evaluated using the AMOS routine <code>zbesk</code>.</p>
<p><code><a href="#ive">ive</a></code> is useful for large arguments <code>z</code>: for these, <code><a href="#iv">iv</a></code> easily overflows,
while <code><a href="#ive">ive</a></code> does not due to the exponential scaling.</p>
<h6 id="references">References</h6>
<h6 id="examples">Examples</h6>
<p>In the following example <code><a href="#iv">iv</a></code> returns infinity whereas <code><a href="#ive">ive</a></code> still returns
a finite number.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">iv</span><span class="p">,</span> <span class="n">ive</span>
<span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">iv</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mf">1000.</span><span class="p">),</span> <span class="n">ive</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mf">1000.</span><span class="p">)</span>
<span class="go">(inf, 0.01256056218254712)</span>
</code></pre>
</div>
<p>Evaluate the function at one point for different orders by
providing a list or NumPy array as argument for the <code>v</code> parameter:</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">ive</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mf">1.5</span><span class="p">],</span> <span class="mf">1.</span><span class="p">)</span>
<span class="go">array([0.46575961, 0.20791042, 0.10798193])</span>
</code></pre>
</div>
<p>Evaluate the function at several points for order 0 by providing an
array for <code>z</code>.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">points</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="o">-</span><span class="mf">2.</span><span class="p">,</span> <span class="mf">0.</span><span class="p">,</span> <span class="mf">3.</span><span class="p">])</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ive</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">points</span><span class="p">)</span>
<span class="go">array([0.30850832, 1. , 0.24300035])</span>
</code></pre>
</div>
<p>Evaluate the function at several points for different orders by
providing arrays for both <code>v</code> for <code>z</code>. Both arrays have to be
broadcastable to the correct shape. To calculate the orders 0, 1
and 2 for a 1D array of points:</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">ive</span><span class="p">([[</span><span class="mi">0</span><span class="p">],</span> <span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="mi">2</span><span class="p">]],</span> <span class="n">points</span><span class="p">)</span>
<span class="go">array([[ 0.30850832, 1. , 0.24300035],</span>
<span class="go"> [-0.21526929, 0. , 0.19682671],</span>
<span class="go"> [ 0.09323903, 0. , 0.11178255]])</span>
</code></pre>
</div>
<p>Plot the functions of order 0 to 3 from -5 to 5.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="o">-</span><span class="mf">5.</span><span class="p">,</span> <span class="mf">5.</span><span class="p">,</span> <span class="mi">1000</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">4</span><span class="p">):</span>
<span class="gp">... </span> <span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">ive</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">x</span><span class="p">),</span> <span class="n">label</span><span class="o">=</span><span class="sa">fr</span><span class="s1">&#39;$I_</span><span class="si">{</span><span class="n">i</span><span class="si">!r}</span><span class="s1">(z)\cdot e^</span><span class="se">{{</span><span class="s1">-|z|</span><span class="se">}}</span><span class="s1">$&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ax</span><span class="o">.</span><span class="n">legend</span><span class="p">()</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ax</span><span class="o">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="sa">r</span><span class="s2">&quot;$z$&quot;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</code></pre>
</div>
<div class="footnotes">
<hr />
<ol>
<li id="fn-1">
<p>Donald E. Amos, "AMOS, A Portable Package for Bessel Functions
of a Complex Argument and Nonnegative Order",
<a href="http://netlib.org/amos/">http://netlib.org/amos/</a>&#160;<a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 1 in the text.">&#8617;</a></p>
</li>
</ol>
</div>
</div>
</section>
<section id="erf">
<input id="erf-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<div class="decorator">@wraps(f_raw)</div>
<span class="def">def</span>
<span class="name">erf</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="erf-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#erf"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="erf-36"><a href="#erf-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
</span><span id="erf-37"><a href="#erf-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="erf-38"><a href="#erf-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
</span><span id="erf-39"><a href="#erf-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
</span><span id="erf-40"><a href="#erf-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
</span><span id="erf-41"><a href="#erf-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
</span><span id="erf-42"><a href="#erf-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="erf-43"><a href="#erf-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="erf-44"><a href="#erf-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="erf-45"><a href="#erf-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="erf-46"><a href="#erf-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
</span><span id="erf-47"><a href="#erf-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
</span><span id="erf-48"><a href="#erf-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="erf-49"><a href="#erf-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>erf(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
<p>erf(z, out=None)</p>
<p>Returns the error function of complex argument.</p>
<p>It is defined as <code>2/sqrt(pi)*integral(exp(-t**2), t=0..z)</code>.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>x</strong> (ndarray):
Input array.</li>
<li><strong>out</strong> (ndarray, optional):
Optional output array for the function values</li>
</ul>
<h6 id="returns">Returns</h6>
<ul>
<li><strong>res</strong> (scalar or ndarray):
The values of the error function at the given points <code>x</code>.</li>
</ul>
<h6 id="see-also">See Also</h6>
<p><code>erfc,</code>, <code>erfinv,</code>, <code>erfcinv,</code>, <code>wofz,</code>, <code>erfcx,</code>, <code>erfi</code> </p>
<h6 id="notes">Notes</h6>
<p>The cumulative of the unit normal distribution is given by
<code>Phi(z) = 1/2[1 + erf(z/sqrt(2))]</code>.</p>
<h6 id="references">References</h6>
<h6 id="examples">Examples</h6>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">scipy</span> <span class="kn">import</span> <span class="n">special</span>
<span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="o">-</span><span class="mi">3</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">special</span><span class="o">.</span><span class="n">erf</span><span class="p">(</span><span class="n">x</span><span class="p">))</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s1">&#39;$x$&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s1">&#39;$erf(x)$&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</code></pre>
</div>
<div class="footnotes">
<hr />
<ol>
</ol>
</div>
</div>
</section>
<section id="erfc">
<input id="erfc-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<div class="decorator">@wraps(f_raw)</div>
<span class="def">def</span>
<span class="name">erfc</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="erfc-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#erfc"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="erfc-36"><a href="#erfc-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
</span><span id="erfc-37"><a href="#erfc-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="erfc-38"><a href="#erfc-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
</span><span id="erfc-39"><a href="#erfc-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
</span><span id="erfc-40"><a href="#erfc-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
</span><span id="erfc-41"><a href="#erfc-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
</span><span id="erfc-42"><a href="#erfc-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="erfc-43"><a href="#erfc-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="erfc-44"><a href="#erfc-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="erfc-45"><a href="#erfc-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="erfc-46"><a href="#erfc-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
</span><span id="erfc-47"><a href="#erfc-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
</span><span id="erfc-48"><a href="#erfc-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="erfc-49"><a href="#erfc-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>erfc(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
<p>erfc(x, out=None)</p>
<p>Complementary error function, <code>1 - erf(x)</code>.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>x</strong> (array_like):
Real or complex valued argument</li>
<li><strong>out</strong> (ndarray, optional):
Optional output array for the function results</li>
</ul>
<h6 id="returns">Returns</h6>
<ul>
<li><strong>scalar or ndarray</strong>: Values of the complementary error function</li>
</ul>
<h6 id="see-also">See Also</h6>
<p><code>erf,</code>, <code>erfi,</code>, <code>erfcx,</code>, <code>dawsn,</code>, <code>wofz</code> </p>
<h6 id="references">References</h6>
<h6 id="examples">Examples</h6>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">scipy</span> <span class="kn">import</span> <span class="n">special</span>
<span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="o">-</span><span class="mi">3</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">special</span><span class="o">.</span><span class="n">erfc</span><span class="p">(</span><span class="n">x</span><span class="p">))</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s1">&#39;$x$&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s1">&#39;$erfc(x)$&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</code></pre>
</div>
<div class="footnotes">
<hr />
<ol>
</ol>
</div>
</div>
</section>
<section id="erfinv">
<input id="erfinv-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<div class="decorator">@wraps(f_raw)</div>
<span class="def">def</span>
<span class="name">erfinv</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="erfinv-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#erfinv"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="erfinv-36"><a href="#erfinv-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
</span><span id="erfinv-37"><a href="#erfinv-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="erfinv-38"><a href="#erfinv-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
</span><span id="erfinv-39"><a href="#erfinv-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
</span><span id="erfinv-40"><a href="#erfinv-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
</span><span id="erfinv-41"><a href="#erfinv-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
</span><span id="erfinv-42"><a href="#erfinv-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="erfinv-43"><a href="#erfinv-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="erfinv-44"><a href="#erfinv-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="erfinv-45"><a href="#erfinv-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="erfinv-46"><a href="#erfinv-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
</span><span id="erfinv-47"><a href="#erfinv-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
</span><span id="erfinv-48"><a href="#erfinv-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="erfinv-49"><a href="#erfinv-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>erfinv(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
<p>erfinv(y, out=None)</p>
<p>Inverse of the error function.</p>
<p>Computes the inverse of the error function.</p>
<p>In the complex domain, there is no unique complex number w satisfying
erf(w)=z. This indicates a true inverse function would be multivalued.
When the domain restricts to the real, -1 &lt; x &lt; 1, there is a unique real
number satisfying erf(erfinv(x)) = x.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>y</strong> (ndarray):
Argument at which to evaluate. Domain: [-1, 1]</li>
<li><strong>out</strong> (ndarray, optional):
Optional output array for the function values</li>
</ul>
<h6 id="returns">Returns</h6>
<ul>
<li><strong>erfinv</strong> (scalar or ndarray):
The inverse of erf of y, element-wise</li>
</ul>
<h6 id="see-also">See Also</h6>
<p><code><a href="#erf">erf</a></code>: Error function of a complex argument <br />
<code><a href="#erfc">erfc</a></code>: Complementary error function, <code>1 - erf(x)</code> <br />
<code><a href="#erfcinv">erfcinv</a></code>: Inverse of the complementary error function </p>
<h6 id="examples">Examples</h6>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">erfinv</span><span class="p">,</span> <span class="n">erf</span>
</code></pre>
</div>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">erfinv</span><span class="p">(</span><span class="mf">0.5</span><span class="p">)</span>
<span class="go">0.4769362762044699</span>
</code></pre>
</div>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">y</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="o">-</span><span class="mf">1.0</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">,</span> <span class="n">num</span><span class="o">=</span><span class="mi">9</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">x</span> <span class="o">=</span> <span class="n">erfinv</span><span class="p">(</span><span class="n">y</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">x</span>
<span class="go">array([ -inf, -0.81341985, -0.47693628, -0.22531206, 0. ,</span>
<span class="go"> 0.22531206, 0.47693628, 0.81341985, inf])</span>
</code></pre>
</div>
<p>Verify that <code>erf(erfinv(y))</code> is <code>y</code>.</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">erf</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
<span class="go">array([-1. , -0.75, -0.5 , -0.25, 0. , 0.25, 0.5 , 0.75, 1. ])</span>
</code></pre>
</div>
<p>Plot the function:</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">y</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">200</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">erfinv</span><span class="p">(</span><span class="n">y</span><span class="p">))</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ax</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ax</span><span class="o">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="s1">&#39;y&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ax</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="s1">&#39;erfinv(y)&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</code></pre>
</div>
</div>
</section>
<section id="erfcinv">
<input id="erfcinv-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<div class="decorator">@wraps(f_raw)</div>
<span class="def">def</span>
<span class="name">erfcinv</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="erfcinv-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#erfcinv"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="erfcinv-36"><a href="#erfcinv-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
</span><span id="erfcinv-37"><a href="#erfcinv-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="erfcinv-38"><a href="#erfcinv-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
</span><span id="erfcinv-39"><a href="#erfcinv-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
</span><span id="erfcinv-40"><a href="#erfcinv-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
</span><span id="erfcinv-41"><a href="#erfcinv-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
</span><span id="erfcinv-42"><a href="#erfcinv-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="erfcinv-43"><a href="#erfcinv-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="erfcinv-44"><a href="#erfcinv-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="erfcinv-45"><a href="#erfcinv-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="erfcinv-46"><a href="#erfcinv-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
</span><span id="erfcinv-47"><a href="#erfcinv-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
</span><span id="erfcinv-48"><a href="#erfcinv-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="erfcinv-49"><a href="#erfcinv-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>erfcinv(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
<p>erfcinv(y, out=None)</p>
<p>Inverse of the complementary error function.</p>
<p>Computes the inverse of the complementary error function.</p>
<p>In the complex domain, there is no unique complex number w satisfying
erfc(w)=z. This indicates a true inverse function would be multivalued.
When the domain restricts to the real, 0 &lt; x &lt; 2, there is a unique real
number satisfying erfc(erfcinv(x)) = erfcinv(erfc(x)).</p>
<p>It is related to inverse of the error function by erfcinv(1-x) = erfinv(x)</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>y</strong> (ndarray):
Argument at which to evaluate. Domain: [0, 2]</li>
<li><strong>out</strong> (ndarray, optional):
Optional output array for the function values</li>
</ul>
<h6 id="returns">Returns</h6>
<ul>
<li><strong>erfcinv</strong> (scalar or ndarray):
The inverse of erfc of y, element-wise</li>
</ul>
<h6 id="see-also">See Also</h6>
<p><code><a href="#erf">erf</a></code>: Error function of a complex argument <br />
<code><a href="#erfc">erfc</a></code>: Complementary error function, <code>1 - erf(x)</code> <br />
<code><a href="#erfinv">erfinv</a></code>: Inverse of the error function </p>
<h6 id="examples">Examples</h6>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">erfcinv</span>
</code></pre>
</div>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">erfcinv</span><span class="p">(</span><span class="mf">0.5</span><span class="p">)</span>
<span class="go">0.4769362762044699</span>
</code></pre>
</div>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">y</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="mf">2.0</span><span class="p">,</span> <span class="n">num</span><span class="o">=</span><span class="mi">11</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">erfcinv</span><span class="p">(</span><span class="n">y</span><span class="p">)</span>
<span class="go">array([ inf, 0.9061938 , 0.59511608, 0.37080716, 0.17914345,</span>
<span class="go"> -0. , -0.17914345, -0.37080716, -0.59511608, -0.9061938 ,</span>
<span class="go"> -inf])</span>
</code></pre>
</div>
<p>Plot the function:</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">y</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">200</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">erfcinv</span><span class="p">(</span><span class="n">y</span><span class="p">))</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ax</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ax</span><span class="o">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="s1">&#39;y&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">ax</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="s1">&#39;erfcinv(y)&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</code></pre>
</div>
</div>
</section>
<section id="logit">
<input id="logit-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<div class="decorator">@wraps(f_raw)</div>
<span class="def">def</span>
<span class="name">logit</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="logit-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#logit"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="logit-36"><a href="#logit-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
</span><span id="logit-37"><a href="#logit-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="logit-38"><a href="#logit-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
</span><span id="logit-39"><a href="#logit-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
</span><span id="logit-40"><a href="#logit-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
</span><span id="logit-41"><a href="#logit-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
</span><span id="logit-42"><a href="#logit-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="logit-43"><a href="#logit-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="logit-44"><a href="#logit-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="logit-45"><a href="#logit-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="logit-46"><a href="#logit-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
</span><span id="logit-47"><a href="#logit-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
</span><span id="logit-48"><a href="#logit-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="logit-49"><a href="#logit-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>logit(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
<p>logit(x, out=None)</p>
<p>Logit ufunc for ndarrays.</p>
<p>The logit function is defined as logit(p) = log(p/(1-p)).
Note that logit(0) = -inf, logit(1) = inf, and logit(p)
for p&lt;0 or p>1 yields nan.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>x</strong> (ndarray):
The ndarray to apply logit to element-wise.</li>
<li><strong>out</strong> (ndarray, optional):
Optional output array for the function results</li>
</ul>
<h6 id="returns">Returns</h6>
<ul>
<li><strong>scalar or ndarray</strong>: An ndarray of the same shape as x. Its entries
are logit of the corresponding entry of x.</li>
</ul>
<h6 id="see-also">See Also</h6>
<p><code><a href="#expit">expit</a></code> </p>
<h6 id="notes">Notes</h6>
<p>As a ufunc logit takes a number of optional
keyword arguments. For more information
see <a href="https://docs.scipy.org/doc/numpy/reference/ufuncs.html">ufuncs </a></p>
<p><em>New in version 0.10.0.</em></p>
<h6 id="examples">Examples</h6>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">logit</span><span class="p">,</span> <span class="n">expit</span>
</code></pre>
</div>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">logit</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="mf">0.25</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">,</span> <span class="mf">0.75</span><span class="p">,</span> <span class="mi">1</span><span class="p">])</span>
<span class="go">array([ -inf, -1.09861229, 0. , 1.09861229, inf])</span>
</code></pre>
</div>
<p><code><a href="#expit">expit</a></code> is the inverse of <code><a href="#logit">logit</a></code>:</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">expit</span><span class="p">(</span><span class="n">logit</span><span class="p">([</span><span class="mf">0.1</span><span class="p">,</span> <span class="mf">0.75</span><span class="p">,</span> <span class="mf">0.999</span><span class="p">]))</span>
<span class="go">array([ 0.1 , 0.75 , 0.999])</span>
</code></pre>
</div>
<p>Plot logit(x) for x in [0, 1]:</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">501</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">y</span> <span class="o">=</span> <span class="n">logit</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">grid</span><span class="p">()</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">ylim</span><span class="p">(</span><span class="o">-</span><span class="mi">6</span><span class="p">,</span> <span class="mi">6</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s1">&#39;x&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s1">&#39;logit(x)&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</code></pre>
</div>
</div>
</section>
<section id="expit">
<input id="expit-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<div class="decorator">@wraps(f_raw)</div>
<span class="def">def</span>
<span class="name">expit</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="expit-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#expit"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="expit-36"><a href="#expit-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
</span><span id="expit-37"><a href="#expit-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="expit-38"><a href="#expit-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
</span><span id="expit-39"><a href="#expit-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
</span><span id="expit-40"><a href="#expit-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
</span><span id="expit-41"><a href="#expit-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
</span><span id="expit-42"><a href="#expit-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="expit-43"><a href="#expit-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="expit-44"><a href="#expit-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="expit-45"><a href="#expit-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="expit-46"><a href="#expit-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
</span><span id="expit-47"><a href="#expit-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
</span><span id="expit-48"><a href="#expit-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="expit-49"><a href="#expit-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>expit(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
<p>expit(x, out=None)</p>
<p>Expit (a.k.a. logistic sigmoid) ufunc for ndarrays.</p>
<p>The expit function, also known as the logistic sigmoid function, is
defined as <code>expit(x) = 1/(1+exp(-x))</code>. It is the inverse of the
logit function.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>x</strong> (ndarray):
The ndarray to apply expit to element-wise.</li>
<li><strong>out</strong> (ndarray, optional):
Optional output array for the function values</li>
</ul>
<h6 id="returns">Returns</h6>
<ul>
<li><strong>scalar or ndarray</strong>: An ndarray of the same shape as x. Its entries
are <code><a href="#expit">expit</a></code> of the corresponding entry of x.</li>
</ul>
<h6 id="see-also">See Also</h6>
<p><code><a href="#logit">logit</a></code> </p>
<h6 id="notes">Notes</h6>
<p>As a ufunc expit takes a number of optional
keyword arguments. For more information
see <a href="https://docs.scipy.org/doc/numpy/reference/ufuncs.html">ufuncs </a></p>
<p><em>New in version 0.10.0.</em></p>
<h6 id="examples">Examples</h6>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">expit</span><span class="p">,</span> <span class="n">logit</span>
</code></pre>
</div>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">expit</span><span class="p">([</span><span class="o">-</span><span class="n">np</span><span class="o">.</span><span class="n">inf</span><span class="p">,</span> <span class="o">-</span><span class="mf">1.5</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mf">1.5</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">inf</span><span class="p">])</span>
<span class="go">array([ 0. , 0.18242552, 0.5 , 0.81757448, 1. ])</span>
</code></pre>
</div>
<p><code><a href="#logit">logit</a></code> is the inverse of <code><a href="#expit">expit</a></code>:</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">logit</span><span class="p">(</span><span class="n">expit</span><span class="p">([</span><span class="o">-</span><span class="mf">2.5</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mf">3.1</span><span class="p">,</span> <span class="mf">5.0</span><span class="p">]))</span>
<span class="go">array([-2.5, 0. , 3.1, 5. ])</span>
</code></pre>
</div>
<p>Plot expit(x) for x in [-6, 6]:</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="o">-</span><span class="mi">6</span><span class="p">,</span> <span class="mi">6</span><span class="p">,</span> <span class="mi">121</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">y</span> <span class="o">=</span> <span class="n">expit</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">grid</span><span class="p">()</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">xlim</span><span class="p">(</span><span class="o">-</span><span class="mi">6</span><span class="p">,</span> <span class="mi">6</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s1">&#39;x&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s1">&#39;expit(x)&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</code></pre>
</div>
</div>
</section>
<section id="logsumexp">
<input id="logsumexp-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function">
<div class="decorator">@wraps(f_raw)</div>
<span class="def">def</span>
<span class="name">logsumexp</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="logsumexp-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#logsumexp"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="logsumexp-36"><a href="#logsumexp-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
</span><span id="logsumexp-37"><a href="#logsumexp-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
</span><span id="logsumexp-38"><a href="#logsumexp-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
</span><span id="logsumexp-39"><a href="#logsumexp-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
</span><span id="logsumexp-40"><a href="#logsumexp-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
</span><span id="logsumexp-41"><a href="#logsumexp-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
</span><span id="logsumexp-42"><a href="#logsumexp-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="logsumexp-43"><a href="#logsumexp-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="logsumexp-44"><a href="#logsumexp-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
</span><span id="logsumexp-45"><a href="#logsumexp-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="logsumexp-46"><a href="#logsumexp-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
</span><span id="logsumexp-47"><a href="#logsumexp-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
</span><span id="logsumexp-48"><a href="#logsumexp-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="logsumexp-49"><a href="#logsumexp-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span></pre></div>
<div class="docstring"><p>Compute the log of the sum of exponentials of input elements.</p>
<h6 id="parameters">Parameters</h6>
<ul>
<li><strong>a</strong> (array_like):
Input array.</li>
<li><p><strong>axis</strong> (None or int or tuple of ints, optional):
Axis or axes over which the sum is taken. By default <code>axis</code> is None,
and all elements are summed.</p>
<p><em>New in version 0.11.0.</em></p></li>
<li><p><strong>b</strong> (array-like, optional):
Scaling factor for exp(<code>a</code>) must be of the same shape as <code>a</code> or
broadcastable to <code>a</code>. These values may be negative in order to
implement subtraction.</p>
<p><em>New in version 0.12.0.</em></p></li>
<li><p><strong>keepdims</strong> (bool, optional):
If this is set to True, the axes which are reduced are left in the
result as dimensions with size one. With this option, the result
will broadcast correctly against the original array.</p>
<p><em>New in version 0.15.0.</em></p></li>
<li><p><strong>return_sign</strong> (bool, optional):
If this is set to True, the result will be a pair containing sign
information; if False, results that are negative will be returned
as NaN. Default is False (no sign information).</p>
<p><em>New in version 0.16.0.</em></p></li>
</ul>
<h6 id="returns">Returns</h6>
<ul>
<li><strong>res</strong> (ndarray):
The result, <code>np.log(np.sum(np.exp(a)))</code> calculated in a numerically
more stable way. If <code>b</code> is given then <code>np.log(np.sum(b*np.exp(a)))</code>
is returned. If <code>return_sign</code> is True, <code>res</code> contains the log of
the absolute value of the argument.</li>
<li><strong>sgn</strong> (ndarray):
If <code>return_sign</code> is True, this will be an array of floating-point
numbers matching res containing +1, 0, -1 (for real-valued inputs)
or a complex phase (for complex inputs). This gives the sign of the
argument of the logarithm in <code>res</code>.
If <code>return_sign</code> is False, only one result is returned.</li>
</ul>
<h6 id="see-also">See Also</h6>
<p><code>numpy.logaddexp,</code>, <code>numpy.logaddexp2</code> </p>
<h6 id="notes">Notes</h6>
<p>NumPy has a logaddexp function which is very similar to <code><a href="#logsumexp">logsumexp</a></code>, but
only handles two arguments. <code>logaddexp.reduce</code> is similar to this
function, but may be less stable.</p>
<h6 id="examples">Examples</h6>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">logsumexp</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">a</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">logsumexp</span><span class="p">(</span><span class="n">a</span><span class="p">)</span>
<span class="go">9.4586297444267107</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">np</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="n">a</span><span class="p">)))</span>
<span class="go">9.4586297444267107</span>
</code></pre>
</div>
<p>With weights</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">a</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">b</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">logsumexp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="o">=</span><span class="n">b</span><span class="p">)</span>
<span class="go">9.9170178533034665</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">np</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">b</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="n">a</span><span class="p">)))</span>
<span class="go">9.9170178533034647</span>
</code></pre>
</div>
<p>Returning a sign flag</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">logsumexp</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">],</span><span class="n">b</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span><span class="n">return_sign</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="go">(1.5413248546129181, -1.0)</span>
</code></pre>
</div>
<p>Notice that <code><a href="#logsumexp">logsumexp</a></code> does not directly support masked arrays. To use it
on a masked array, convert the mask into zero weights:</p>
<div class="pdoc-code codehilite">
<pre><span></span><code><span class="gp">&gt;&gt;&gt; </span><span class="n">a</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">ma</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">np</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span> <span class="mi">2</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="mi">3</span><span class="p">)],</span>
<span class="gp">... </span> <span class="n">mask</span><span class="o">=</span><span class="p">[</span><span class="kc">False</span><span class="p">,</span> <span class="kc">True</span><span class="p">,</span> <span class="kc">False</span><span class="p">])</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">b</span> <span class="o">=</span> <span class="p">(</span><span class="o">~</span><span class="n">a</span><span class="o">.</span><span class="n">mask</span><span class="p">)</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="nb">int</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">logsumexp</span><span class="p">(</span><span class="n">a</span><span class="o">.</span><span class="n">data</span><span class="p">,</span> <span class="n">b</span><span class="o">=</span><span class="n">b</span><span class="p">),</span> <span class="n">np</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span>
<span class="go">1.6094379124341005, 1.6094379124341005</span>
</code></pre>
</div>
</div>
</section>
</main>
<script>
function escapeHTML(html) {
return document.createElement('div').appendChild(document.createTextNode(html)).parentNode.innerHTML;
}
const originalContent = document.querySelector("main.pdoc");
let currentContent = originalContent;
function setContent(innerHTML) {
let elem;
if (innerHTML) {
elem = document.createElement("main");
elem.classList.add("pdoc");
elem.innerHTML = innerHTML;
} else {
elem = originalContent;
}
if (currentContent !== elem) {
currentContent.replaceWith(elem);
currentContent = elem;
}
}
function getSearchTerm() {
return (new URL(window.location)).searchParams.get("search");
}
const searchBox = document.querySelector(".pdoc input[type=search]");
searchBox.addEventListener("input", function () {
let url = new URL(window.location);
if (searchBox.value.trim()) {
url.hash = "";
url.searchParams.set("search", searchBox.value);
} else {
url.searchParams.delete("search");
}
history.replaceState("", "", url.toString());
onInput();
});
window.addEventListener("popstate", onInput);
let search, searchErr;
async function initialize() {
try {
search = await new Promise((resolve, reject) => {
const script = document.createElement("script");
script.type = "text/javascript";
script.async = true;
script.onload = () => resolve(window.pdocSearch);
script.onerror = (e) => reject(e);
script.src = "../search.js";
document.getElementsByTagName("head")[0].appendChild(script);
});
} catch (e) {
console.error("Cannot fetch pdoc search index");
searchErr = "Cannot fetch search index.";
}
onInput();
document.querySelector("nav.pdoc").addEventListener("click", e => {
if (e.target.hash) {
searchBox.value = "";
searchBox.dispatchEvent(new Event("input"));
}
});
}
function onInput() {
setContent((() => {
const term = getSearchTerm();
if (!term) {
return null
}
if (searchErr) {
return `<h3>Error: ${searchErr}</h3>`
}
if (!search) {
return "<h3>Searching...</h3>"
}
window.scrollTo({top: 0, left: 0, behavior: 'auto'});
const results = search(term);
let html;
if (results.length === 0) {
html = `No search results for '${escapeHTML(term)}'.`
} else {
html = `<h4>${results.length} search result${results.length > 1 ? "s" : ""} for '${escapeHTML(term)}'.</h4>`;
}
for (let result of results.slice(0, 10)) {
let doc = result.doc;
let url = `../${doc.modulename.replaceAll(".", "/")}.html`;
if (doc.qualname) {
url += `#${doc.qualname}`;
}
let heading;
switch (result.doc.kind) {
case "function":
if (doc.fullname.endsWith(".__init__")) {
heading = `<span class="name">${doc.fullname.replace(/\.__init__$/, "")}</span>${doc.signature}`;
} else {
heading = `<span class="def">${doc.funcdef}</span> <span class="name">${doc.fullname}</span>${doc.signature}`;
}
break;
case "class":
heading = `<span class="def">class</span> <span class="name">${doc.fullname}</span>`;
if (doc.bases)
heading += `<wbr>(<span class="base">${doc.bases}</span>)`;
heading += `:`;
break;
case "variable":
heading = `<span class="name">${doc.fullname}</span>`;
if (doc.annotation)
heading += `<span class="annotation">${doc.annotation}</span>`;
if (doc.default_value)
heading += `<span class="default_value"> = ${doc.default_value}</span>`;
break;
default:
heading = `<span class="name">${doc.fullname}</span>`;
break;
}
html += `
<section class="search-result">
<a href="${url}" class="attr ${doc.kind}">${heading}</a>
<div class="docstring">${doc.doc}</div>
</section>
`;
}
return html;
})());
}
if (getSearchTerm()) {
initialize();
searchBox.value = getSearchTerm();
onInput();
} else {
searchBox.addEventListener("focus", initialize, {once: true});
}
searchBox.addEventListener("keydown", e => {
if (["ArrowDown", "ArrowUp", "Enter"].includes(e.key)) {
let focused = currentContent.querySelector(".search-result.focused");
if (!focused) {
currentContent.querySelector(".search-result").classList.add("focused");
} else if (
e.key === "ArrowDown"
&& focused.nextElementSibling
&& focused.nextElementSibling.classList.contains("search-result")
) {
focused.classList.remove("focused");
focused.nextElementSibling.classList.add("focused");
focused.nextElementSibling.scrollIntoView({
behavior: "smooth",
block: "nearest",
inline: "nearest"
});
} else if (
e.key === "ArrowUp"
&& focused.previousElementSibling
&& focused.previousElementSibling.classList.contains("search-result")
) {
focused.classList.remove("focused");
focused.previousElementSibling.classList.add("focused");
focused.previousElementSibling.scrollIntoView({
behavior: "smooth",
block: "nearest",
inline: "nearest"
});
} else if (
e.key === "Enter"
) {
focused.querySelector("a").click();
}
}
});
</script></body>
</html>