CINXE.COM
Browse the AMS Bookstore
<!DOCTYPE html> <html lang="en"> <head> <!-- cookie consent code --> <link rel="stylesheet" type="text/css" href="https://www.ams.org/css/cookieconsent.min.css" /> <script src="https://www.ams.org/js/cookieconsent.min.js"></script> <script> window.addEventListener("load", function () { window.cookieconsent.initialise({ "palette": { "popup": { "background": "#edeff5", "text": "#000000" }, "button": { "background": "#4b81e8" } }, "theme": "classic", "position": "bottom-right", "content": { "message": "This website uses cookies to ensure you get the best experience on our website.", "href": "https://www.ams.org/privacy", "dismiss": "Okay", "link": "Learn more about our privacy policy" } }) }); </script> <!-- end cookie consent code --> <!-- Google tag (gtag.js) --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-26G4XFTR63"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-26G4XFTR63'); </script> <!-- Google Tag Manager --> <script> (function (w, d, s, l, i) { w[l] = w[l] || []; w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' }); var f = d.getElementsByTagName(s)[0], j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f); })(window, document, 'script', 'dataLayer', 'GTM-P3772VN');</script> <!-- End Google Tag Manager --> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1" /> <title>Browse the AMS Bookstore</title> <link rel="stylesheet" href="/lib/bootstrap/dist/css/bootstrap.min.css" /> <link rel="stylesheet" href="/css/site.css?v=la2wBcwNrtsWnRcKs9-t6qPZCC77Hs6CAduqGL_rRNM" /> <link rel="stylesheet" href="/AMS.Bookstore.Web.styles.css?v=mEUDLZZE54KYSwZwWfP3PP5vkomreysVvvDaU6mwQPY" /> <link rel="stylesheet" href="/css/modal.css?v=jRvw7By4TNDoJZ_KpsQbElRYsNpbzhWunAP5-eocRzk" /> <link rel="stylesheet" href="/css/loadingPanel.css?v=lBJGOYH_EIEBMMe17FTOETO6n2E9cwL1WhqodiMLsoM" /> <link rel="stylesheet" href="/css/cart.css?v=OO3e6LoNzay9iX1eQBG8Hnya8fMmx9ZQBbFa7WLeDZ8" /> <script src="/lib/jquery/dist/jquery.min.js"></script> <script src="/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script> <script src="/js/site.js?v=LNn6T9_eOayER-rY4wenC0n8eJ4RYNIEiMf3HRxDv-4"></script> <script src="https://kit.fontawesome.com/2ad6d7fbd6.js" crossorigin="anonymous"></script> <script src="/lib/sharethis/js/sharethis.js?v=MwmBK2LdmpagMX_OQV5w4rl5KC5hV5U2i72SiTbLwSs#property=63d912115a2f67001342bdf7&product=inline-share-buttons&source=platform"></script> <script type="text/javascript"> $(document).ready(function() { $("#BrowseModelLink").addClass("active"); $(".loginLogout").click(setRedirect); $(".cartCounter").html($("#cartCountPlaceholder").html()); handleCustomShareConfig(); handleInfoHeader('2024/11/23|06:23'); }); function setRedirect() { event.preventDefault(); if ("" == "") { // we are on the browse page, need to set propery with javascript() var returnUrl = getShareUrl(); returnUrl = encodeURIComponent(returnUrl); var baseUrl = $(this).prop("href"); var questionOrAnd = baseUrl.includes("?") ? "&" : "?"; location.href = baseUrl + questionOrAnd + "returnUrl=" + returnUrl; } else { location.href = $(this).prop("href"); } } </script> </head> <body> <!-- Google Tag Manager (noscript) --> <noscript b-nlceesq935> <iframe b-nlceesq935 src="https://www.googletagmanager.com/ns.html?id=GTM-P3772VN" height="0" width="0" style="display:none;visibility:hidden"></iframe> </noscript> <!-- End Google Tag Manager (noscript) --> <div b-nlceesq935 id="cartCountPlaceholder" style="display:none"><div class="cart"> <a class="cart" href="https://ebus.ams.org/ebus/ShoppingCart.aspx"> <span class="showItems"> <span class="cartCountLabel"> 0 </span> </span> </a> </div></div> <div b-nlceesq935 class="headerLogoSearchContainer"> <div b-nlceesq935 role="banner" class="headerLogoSearchContainerTopRow"> <div b-nlceesq935 class="headerLogoContainer mobile"> <button b-nlceesq935 id="headerLogoMenuButton" class="headerLogoMenuContainer" onclick="openSideNav(event);" onkeypress="handleKeypressForClick(event)" tabindex="0" aria-label="Open side navigation menu"></button> <div b-nlceesq935><a b-nlceesq935 href="/" aria-label="Link to browse"><img b-nlceesq935 src="/images/ams-bookstore-logo.png" alt="AMS Logo"></a></div> <div b-nlceesq935 class="headerLogoCartContainer"> <div b-nlceesq935 id="cartCounter" class="cartCounter"> </div> </div> </div> <div b-nlceesq935 class="headerLogoContainer wide"> <a b-nlceesq935 href="/" aria-label="Link to browse"><img b-nlceesq935 src="/images/ams-bookstore-logo.png" alt="AMS Logo"></a> </div> <div b-nlceesq935 class="headerLogoRightResponsive"> <div b-nlceesq935 class="headerRightSideActionItems"> <div b-nlceesq935 class="headerNavLinks"> <ul b-nlceesq935 class="navbar-nav flex-grow-1"> <li b-nlceesq935 class="nav-item"> <a b-nlceesq935 href="https://www.ams.org" target="_blank" class="nav-link text-dark">AMS Home<span b-nlceesq935 class="sr-only">(opens in a new tab)</span><span b-nlceesq935 class="extLink"></span></a> </li> <li b-nlceesq935 class="nav-item"> <a class="nav-link text-dark" href="/Bookshelf">My Bookshelf</a> </li> <li b-nlceesq935 class="nav-item"> <a class="nav-link text-dark loginLogout" href="/Account/Login">Login</a> </li> </ul> </div> <div b-nlceesq935 class="headerSearchContainer"> <link rel="stylesheet" href="/css/simpleSearch.css?v=Zp72v9BNKGS-eDr-MLHDvaAIQNNugvRUQM_CWL_F0l8" /> <link rel="stylesheet" href="//code.jquery.com/ui/1.13.1/themes/base/jquery-ui.css"> <script src="https://code.jquery.com/ui/1.13.1/jquery-ui.js"></script> <script src="/js/simpleSearch.js?v=176KrpHOwVdaFKNW5L7MgS2hJg1vembFvfNgHaMs8Vc"></script> <div role="search" id="simpleSearchContainer" class="simpleSearchContainer"> <div id="simpleSearchInputWrapper" class="simpleSearchInputWrapper" > <div class="simpleSearchMenuBtnContainer" onclick="openSideNav(event);" onkeypress="handleKeypressForClick(event)" tabindex="0"></div> <input id="simpleSearchInput" class="form-control simpleSearchInput" type="search" placeholder="Search the AMS Bookstore" autocomplete="off" aria-describedby="initInstr" aria-owns="searchSuggestionsResults" aria-expanded="false" aria-autocomplete="both" aria-activedescendant="" /><label class="hiddenLabel" for="simpleSearchInput">Search the AMS Bookstore</label> <div class="simpleSearchIconContainer"><button class="simpleSearchBtn" onclick="performSimpleSearch($('#simpleSearchInput').val())"><svg width="18" height="18" viewBox="0 0 13 13"><title>search</title><path d="m4.8495 7.8226c0.82666 0 1.5262-0.29146 2.0985-0.87438 0.57232-0.58292 0.86378-1.2877 0.87438-2.1144 0.010599-0.82666-0.28086-1.5262-0.87438-2.0985-0.59352-0.57232-1.293-0.86378-2.0985-0.87438-0.8055-0.010599-1.5103 0.28086-2.1144 0.87438-0.60414 0.59352-0.8956 1.293-0.87438 2.0985 0.021197 0.8055 0.31266 1.5103 0.87438 2.1144 0.56172 0.60414 1.2665 0.8956 2.1144 0.87438zm4.4695 0.2115 3.681 3.6819-1.259 1.284-3.6817-3.7 0.0019784-0.69479-0.090043-0.098846c-0.87973 0.76087-1.92 1.1413-3.1207 1.1413-1.3553 0-2.5025-0.46363-3.4417-1.3909s-1.4088-2.0686-1.4088-3.4239c0-1.3553 0.4696-2.4966 1.4088-3.4239 0.9392-0.92727 2.0864-1.3969 3.4417-1.4088 1.3553-0.011889 2.4906 0.45771 3.406 1.4088 0.9154 0.95107 1.379 2.0924 1.3909 3.4239 0 1.2126-0.38043 2.2588-1.1413 3.1385l0.098834 0.090049z"></path></svg></button></div> <span id="initInstr" style="display: none;">When autocomplete results are available use up and down arrows to review and enter to select. Touch device users, explore by touch or with swipe gestures.</span> <div id="simpleSearchStatus" role="status" aria-live="polite" aria-relevant="additions" class="sr-only"></div> </div> </div> <input name="__RequestVerificationToken" type="hidden" value="CfDJ8IxuUvaeZRREi9I41erTZ0sDA4Gg_O5C6RWR0gEDSrwk1lQNwjFoidA24oAmoz84j0TC-rhtbd4BV9IY1wnGAq1ZSTr-UoHCuOOJu2rDbC6W2u0cKFF1Is4HWZz5PRLRhZfHWdfYqfRysVYHKSd5JbQ" /> <script type="text/javascript"> $(document).ready(function () { initSearchSuggestions(); }); </script> <div b-nlceesq935 class="headerNavLinks advancedSearchBtnLinkContainer"> <a id="AdvancedSearchLink" class="advancedSearchLink nav-link text-dark" href="/AdvancedSearch">Advanced Search</a> </div> <div b-nlceesq935 id="cartCounterWide" class="cartCounter wide"> </div> </div> </div> </div> </div> <div b-nlceesq935 role="navigation" class="headerNavLinks fullWidthMenu"> <ul b-nlceesq935 class="navbar-nav flex-grow-1"> <li b-nlceesq935 class="nav-item"> <a id="BrowseModelLink" class="nav-link text-dark" href="/Browse">Browse</a> </li> <li b-nlceesq935 class="nav-item"> <a b-nlceesq935 id="belowHeaderBooksOnSaleLink" class="nav-link text-dark" href="/books-on-sale">On Sale</a> </li> <li b-nlceesq935 class="nav-item"> <a b-nlceesq935 id="belowHeaderMAAPressLink" class="nav-link text-dark" href="/maa-press-browse">MAA Press Books</a> </li> <li b-nlceesq935 class="nav-item"> <a b-nlceesq935 id="belowHeaderTextbookLink" class="nav-link text-dark" href="/bookstore-textbooks">Textbooks</a> </li> <li b-nlceesq935 class="nav-item"> <a b-nlceesq935 id="belowHeaderBookSeriesLink" class="nav-link text-dark" href="/bookstore-series">Book Series</a> </li> <li b-nlceesq935 class="nav-item"> <a b-nlceesq935 id="belowHeaderEBookCollectionsLink" class="nav-link text-dark" href="https://www.ams.org/ebooks" target="_blank">eBook Collections<span b-nlceesq935 class="sr-only">(opens in a new tab)</span><span b-nlceesq935 class="extLink"></span></a> </li> </ul> </div> </div> <div b-nlceesq935 role="navigation" class="sideNav"> <ul b-nlceesq935 class="sideNavUl"> <li b-nlceesq935> <button b-nlceesq935 class="headerLogoMenuContainer close" onclick="closeSideNav();" onkeypress="handleCloseSideNaveKeypress(event)" tabindex="0" aria-label="Close side navigation menu"></button> </li> <li b-nlceesq935 class="nav-item"> <a id="advancedSearchLinkSideNav" class="advancedSearchLink" class="nav-link" href="/AdvancedSearch">Advanced Search</a> </li> <li b-nlceesq935 class="nav-item"> <a id="browseModelLink" class="nav-link" href="/Browse">Browse</a> </li> <li b-nlceesq935 class="nav-item"> <a b-nlceesq935 id="sideMenuBooksOnSaleLink" class="nav-link" href="/books-on-sale">On Sale</a> </li> <li b-nlceesq935 class="nav-item"> <a b-nlceesq935 id="sideMenuMAAPressLink" class="nav-link" href="/maa-press-browse">MAA Press Books</a> </li> <li b-nlceesq935 class="nav-item"> <a b-nlceesq935 id="sideMenuTextbookLink" class="nav-link" href="/bookstore-textbooks">Textbooks</a> </li> <li b-nlceesq935 class="nav-item"> <a b-nlceesq935 id="sideMenuBookSeriesLink" class="nav-link" href="/bookstore-series">Book Series</a> </li> <li b-nlceesq935 class="nav-item"> <a b-nlceesq935 id="sideMenuEBookCollectionsLink" class="nav-link" href="https://www.ams.org/ebooks" target="_blank">eBook Collections<span b-nlceesq935 class="sr-only">(opens in a new tab)</span><span b-nlceesq935 class="extLink"></span></a> </li> <li b-nlceesq935 class="nav-item userAccountSection"> <a class="nav-link" href="/Bookshelf">My Bookshelf</a> </li> <li b-nlceesq935 class="nav-item"> <a class="nav-link loginLogout" href="/Account/Login">Login</a> </li> </ul> </div> <div b-nlceesq935 class="sideNavOverlay"></div> <div b-nlceesq935 class="container"> <main b-nlceesq935 role="main" class="pb-3"> <script type="text/x-mathjax-config"> MathJax.Hub.Config({ tex2jax: { inlineMath: [['$','$'], ['\\(','\\)']], processEscapes: true }, loader: {load: ['[tex]/textmacros']}, tex: {packages: {'[+]': ['textmacros']}} }); </script> <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> <h1 class="sr-only">Bookstore Browse</h1> <link rel="stylesheet" href="/css/productBrowse.css?v=KK39n8HjVkeUQf0w0FF8boom38t9FgDqr9z1xu8KwHE" /> <link rel="stylesheet" href="//code.jquery.com/ui/1.13.1/themes/base/jquery-ui.css"> <link rel="stylesheet" href="/lib/slick/dist/slick.css"> <link rel="stylesheet" href="/lib/slick/dist/slick-theme.css"> <script src="https://code.jquery.com/ui/1.13.1/jquery-ui.js"></script> <script src="/lib/slick/dist/slick.js"></script> <script src="/js/browse.js?v=riYLrSUYhw_O-88IXsh_PC4rrK2_RLIjllcThWHnYzs"></script> <script type="text/javascript"> var lastScrollTop = 0; selectedFilterDelimiter = "|"; advancedSearchDelimiter = "|"; ebusinessHomeUrl = "https://ebus.ams.org/ebus"; var quickViewObject; </script> <div id="productBrowseBackToTop" class="productBrowseBackToTop"></div> <div id="productBrowseShareWrapper" class="jmodal productBrowseShareModal"> <div class="productBrowseShareContainer"> <div id="sharethis-button-container"></div> <div class="productBrowseShareInfo"> Share this page via the icons above, or by copying the link below: </div> <div id="productBrowseShareLinkInputContainer" class="productBrowseShareLinkInputContainer"> <div id="productBrowseShareLinkDisplay" class="productBrowseShareLinkDisplay"></div> </div> <div class="productBrowseShareCopyToClipboardBtnContainer"> <div class="productBrowseShareCopyToClipboardBtn" onclick="copyShareToClipboard('');" onkeypress="handleKeypressForClick(event)" tabindex="0"> Copy To Clipboard </div> <div class="productBrowseShareCopyToClipboardSuccess"> <div class="productBrowseShareCopyToClipboardSuccessMessage">Successfully Copied!</div> </div> </div> </div> </div> <div id="productBrowseQuickView" class="jmodal"> <div id="productBrowseQuickViewDetailsLoading" class="productBrowseLoadingPanel containedToParent hideContents"> <div> <div class="sp sp-3balls"></div> </div> </div> <div class="productBrowseQuickViewContainer"> <!-- Left Column / Image --> <div class="quickViewLeftColumn"> <img id="productBrowseQuickViewImage" class="productBrowseQuickViewLargeImage" src="" title="" style=""> </div> <!-- Right Column --> <div class="quickViewRightColumn"> <div class="productBrowseQuickViewDataItems"> <div class="productDetailTitle"> <span id="productBrowseQuickViewTitle" class="productBrowseQuickViewTitle"></span> </div> <div class="productBrowseQuickViewAuthorContainer"> <span id="productBrowseQuickViewAuthor" class="productBrowseQuickViewAuthor"></span> </div> <div class="productBrowseQuickViewFlagIconContainer"> <img id="imgTXT" class="productBrowseQuickViewFlagIcon hiddenIcon" src="/images/textbook.png" alt="icon containing the text textbook" /> <img id="imgAPP" class="productBrowseQuickViewFlagIcon hiddenIcon" src="/images/appliedMath.png" alt="icon containing the text applied math" /> <img id="imgIBL" class="productBrowseQuickViewFlagIcon hiddenIcon" src="/images/ibl.png" alt="icon containing the text inquiry-based learning" /> <img id="imgMAA" class="productBrowseQuickViewFlagIcon hiddenIcon" src="/images/maaIcon.png" alt="icon containing the text AMS MAA Press" /> </div> <div class="productBrowseQuickViewAvailableLabel">Available Formats:</div> <div class="productBrowseQuickViewTypeContainer"> <div class="productBrowseQuickViewType"> <div class="productBrowseQuickViewBookTypeChoose"> </div> </div> </div> <div class="productBrowseQuickViewCartItemContainer"> </div> <div class="productBrowseQuickViewProductPrice"> <a href="#" class="productBrowseQuickViewCartBtn">Add to cart</a> </div> </div> </div> </div> <div class="productBrowseQuickViewContainer"> <div class="productBrowseQuickViewFullDetailsContainer"> SEE FULL PRODUCT DETAILS </div> </div> </div> <div id="productBrowseAddedToCart" class="productBrowseAddedToCartContainer jmodal"> <div id="productBrowseAddedToCartLoading" class="productBrowseLoadingPanel hideContents"> <div> <div class="sp sp-3balls"></div> </div> </div> <div class="productBrowseAddedToCartContainer"> <div class="modalHeaderContainer"> <div class="modalIcon"></div> </div> <div class="productBrowseAddedToCartMessage success"> Item Successfully Added to Cart </div> <div class="productBrowseAddedToCartMessage error"> An error was encountered while trying to add the item to the cart. Please try again. </div> <div class="productBrowseAddedToCartBtnContainer success"> <div> <a id="productBrowseAddedToCartContinueBtn" href="#" rel="jmodal:close" class="productBrowseAddedToCartContinueBtn">Continue Shopping</a> </div> <div> <a id="productBrowseAddedToCartCheckoutBtn" href="https://ebus.ams.org/ebus/ShoppingCart.aspx" target="_self" class="productBrowseAddedToCartCheckoutBtn">Go to Checkout</a> </div> </div> <div class="productBrowseAddedToCartBtnContainer error"> <div> <a id="productBrowseAddedToCartErrorOKBtn" href="#" rel="jmodal:close" class="productBrowseAddedToCartErrorOKBtn">OK</a> </div> </div> </div> </div> <div id="productBrowseConfirmExport" class="productBrowseConfirmExportModalContainer jmodal"> <div class="productBrowseConfirmExportContainer"> <div class="productBrowseConfirmExportMessage"> You are attempting to export <span id="productBrowseConfirmExportTotalRows"></span> results and this may take some time.<br /><br /> Please click OK below to continue or click Cancel to return and further filter down your results. </div> <div class="productBrowseConfirmExportBtnContainer"> <div> <a id="productBrowseConfirmExportOKBtn" href="#" rel="jmodal:close" onclick="confirmExportResults('')" onkeypress="handleKeypressForClick(event)" class="productBrowseConfirmExportOKBtn" tabindex="0">OK</a> </div> <div> <a id="productBrowseConfirmExportCancelBtn" href="#" rel="jmodal:close" class="productBrowseConfirmExportCancelBtn" tabindex="0">Cancel</a> </div> </div> </div> </div> <div id="productBrowseBlankItem" style="display: none;"> <li class="productBrowseListItem"> <div class="productBrowseProductContainer"> <div class="productBrowseImageContainer" tabindex="0"> <img class="productBrowseImage productBrowseSmallImage" onerror="replaceImageError(this);" src="/images/not_found.png" title="" style=""> <button class="quick-view" tabindex="0">QUICK VIEW</button> </div> <div class="productBrowseProductInfoContainer"> <table style="height: 100%; width: 100%;" role="presentation"> <tr class="productBrowseHeaderRow"> <th> Presentation table for product info </th> </tr> <tr> <td style="padding-top: 10px; padding-bottom: 10px;"> <table width="100%" cellpadding="0" cellspacing="0" role="presentation"> <tbody> <tr class="productBrowseHeaderRow"> <th> Product Title, Customers, Product code, description </th> </tr> <tr class="productBrowseTitleRow"> <td> <a id="lnkTitle" class="productBrowseTitleLink" ><span class="productBrowseTitle"></span></a> </td> </tr> <tr class="productBrowseRelatedCustomersRow hiddenOnLoad"> <td colspan="2"> <span class="productBrowseRelatedCustomersLabel"></span> </td> </tr> <tr class="productBrowseProductCodeRow hiddenOnLoad"> <td colspan="2"> <span style="font-weight: bold;">Product Code: </span><span class="productBrowseProductCode"></span> </td> </tr> <tr class="productBrowseCopyrightRow hiddenOnLoad"> <td colspan="2"> <span style="font-weight: bold;">Copyright Year: </span><span class="productBrowseCopyrightYearLabel"></span> </td> </tr> <tr class="productBrowseMoreRow hiddenOnLoad"> <td colspan="2"> <div id="productBrowseListMoreButton" class="productBrowseListMoreButton"> More<div class="productBrowseDropdownExpand active"> </div> </div> <div id="productBrowseListLessButton" class="productBrowseListLessButton"> Less<div class="productBrowseDropdownCollapse active"> </div> </div> <div class="productBrowseListMoreInfo wide"> <div> <span class="productBrowseProductDescriptionLabel"></span> </div> <div class="productBrowseListReadershipLabel"> Readership </div> <div> <span class="productBrowseReadershipLabel"></span> </div> </div> </td> </tr> </tbody> </table> </td> </tr> </table> </div> </div> <div class="productBrowseListMoreInfo mobile"> <div> <span class="productBrowseProductDescriptionLabel"></span> </div> <div class="productBrowseListReadershipLabel"> Readership </div> <div> <span class="productBrowseReadershipLabel"></span> </div> </div> </li> </div> <input type="hidden" id="hdnRowsPerPage" name="RowsPerPage" value="0" /> <input type="hidden" id="hdnListView" name="ListView" value="" /> <input type="hidden" id="hdnSelectedFilters" name="SelectedFilters" value="" /> <input type="hidden" id="hdnSimpleSearch" name="SimpleSearch" value="ebus/Register.aspx" /> <input type="hidden" id="hdnAdvancedSearch" name="AdvancedSearch" value="" /> <input type="hidden" id="hdnDynamicAdvancedSearch" name="DynamicAdvancedSearch" value="" /> <input type="hidden" id="hdnShowFilter" name="ShowFilter" value="" /> <input type="hidden" id="hdnHideLeftMenu" name="HideLeftMenu" data-val="true" data-val-required="The HideLeftMenu field is required." value="" /> <input type="hidden" id="hdnInitialFilters" name="InitialFilters" value="" /> <input type="hidden" id="hdnNumToShow" name="NumToShow" data-val="true" data-val-required="The NumToShow field is required." value="-1" /> <input type="hidden" id="hdnSuppressScrolling" name="SuppressScrolling" data-val="true" data-val-required="The SuppressScrolling field is required." value="" /> <input type="hidden" id="hdnSuppressImageLink" name="SuppressImageLink" data-val="true" data-val-required="The SuppressImageLink field is required." value="" /> <div id="productBrowseAdHeader" class="productBrowseAdHeader hiddenOnLoad"> <script type="text/javascript"> $(document).ready(function() { if ("True" === "False") { var adImages = $("#adSpaceContainer638679578317251010 .adSpaceItemContainer"); if (adImages.length > 1) { $("#adSpaceContainer638679578317251010").slick({ arrows: false, dots: true, /*centerMode: true,*/ infinite: true, variableWidth: false, slidesToShow: 1, slidesToScroll: 1, touchThreshold: 10, autoplay: true, autoplaySpeed: 5000, }); } } }); </script> </div> <div class="productBrowseListViewContainer hiddenOnLoad"> <div id="productBrowseContinuousScrollTopContainer" class="toggle productBrowseContinuousScrollTopContainer" style="display: none;"> <div class="productBrowseContinuousScrollButtons"> <input id="productBrowseToggleContinousScrollTop" class="productBrowseToggleButton productBrowseToggle_" type="checkbox" onclick="toggleContinuousScroll(this, '');" onkeypress="handleKeypressForClick(event)" tabindex="0" title="Toggle continuous scroll"/><label class="hiddenLabel" for="productBrowseToggleContinousScrollTop">Turn on continuous scroll</label> </div> <div class="productBrowseContinuousScrollLabel">Continuous Scroll:</div> </div> <div id="productBrowseListViewSelector" class="productBrowseListViewSelector"> <button id="productBrowseViewList" runat="server" data-view-type="list" onclick="changeView('list', ''); return false;" class="productBrowseViewSelector listView left active">Change to List View</button> <button id="productBrowseViewGrid" runat="server" data-view-type="grid" onclick="changeView('grid', ''); return false;" class="productBrowseViewSelector gridView right">Change to Grid View</button> </div> <div class="productBrowseSortSelectorContainer"> <div class="productBrowseSortDropdownWrapper" onclick="toggleSortDropdown();" onkeypress="handleKeypressForClick(event)" tabindex="0"> <div class="productBrowseDropdown"> <div class="productBrowseDropdownSelectionContainer"> <span id="productBrowseSortDropdownSelection" class="productBrowseDropdownSelection">Sort By:</span> <div class="productBrowseDropdownExpand active"> </div> <div class="productBrowseDropdownCollapse"> </div> </div> <ul id="productBrowseSortDropdownUl" class="productBrowseSortDropdownUl hiddenUl" > <li class="productBrowseSortDropdownOption selected" onclick="selectSort(this, '');" data-value="RELEVANCY" tabindex="0">Top Matches</li> <li class="productBrowseSortDropdownOption" onclick="selectSort(this, '');" data-value="DATE_DESC" tabindex="0">Newest to Oldest</li> <li class="productBrowseSortDropdownOption" onclick="selectSort(this, '');" data-value="DATE_ASC" tabindex="0">Oldest to Newest</li> <li class="productBrowseSortDropdownOption" onclick="selectSort(this, '');" data-value="TITLE_ASC" tabindex="0">Title - A to Z</li> <li class="productBrowseSortDropdownOption" onclick="selectSort(this, '');" data-value="TITLE_DESC" tabindex="0">Title - Z to A</li> </ul> </div> </div> </div> <div class="productBrowseRowsPerPageSelectorContainer"> <div class="productBrowseDropdownWrapper" onclick="toggleRowsPerPageDropdown();" onkeypress="handleKeypressForClick(event)" tabindex="0"> <div class="productBrowseDropdown"> <div class="productBrowseDropdownSelectionContainer"> <span id="productBrowseDropdownSelection" class="productBrowseDropdownSelection">Show:</span> <div class="productBrowseDropdownExpand active"> </div> <div class="productBrowseDropdownCollapse"> </div> </div> <ul id="productBrowseDropdownUl" class="productBrowseDropdownUl hiddenUl" > <li class="productBrowseDropdownOption selected" onclick="selectRowsPerPage(this, '');" data-value="12" tabindex="0">Show: 12</li> <li class="productBrowseDropdownOption" onclick="selectRowsPerPage(this, '');" data-value="24" tabindex="0">Show: 24</li> <li class="productBrowseDropdownOption" onclick="selectRowsPerPage(this, '');" data-value="48" tabindex="0">Show: 48</li> </ul> </div> </div> </div> <div class="productBrowseShareLinkContainer" onclick="javascript:showShareModal('');" onkeypress="handleKeypressForClick(event)" tabindex="0"> <div class="productBrowseShareLinkBtn"></div> </div> <div class="productBrowseExportLinkContainer hiddenOnLoad" onclick="javascript:initExportResults('');" onkeypress="handleKeypressForClick(event)" data-tooltip="Export results to excel"> <div class="productBrowseExportLinkBtn"></div> </div> <div class="productBrowseResultCountContainer hiddenOnLoad twoColumn"> <span id="productBrowseResultCountTopTwoColumn" class="productBrowseResultCount"></span> </div> <div class="productBrowseFilterContainer" onclick="javascript:toggleFilterContainer();" onkeypress="handleKeypressForClick(event)" tabindex="0"> <div class="productBrowseFilterBtn"></div> </div> </div> <div id="productBrowseContent" class="productBrowseContent"> <div id="loadingPanel" class="productBrowseLoadingPanel containedToParent"> <div> <div class="sp sp-3balls"></div> </div> </div> <div id="productBrowseLeftMenuPane" class="productBrowseLeftMenuPane hiddenOnLoad"> <div> <div id="productBrowseApplyFilterContainerTop" class="productBrowseApplyFilterContainer"> <input id="productBrowseApplyFilterBtnTop" class="productBrowseApplyFilterBtn" type="button" value="Apply Filter(s)" onclick="applyFilters(''); return false;"/> <input id="productBrowseClearFilterBtnTop" class="productBrowseClearFilterBtn noFilters" type="button" value="Clear Filter(s)" onclick="clearFilters(''); return false;"/> </div> <ul id="productBrowseFilterList" class="productBrowseFilterList"> </ul> </div> <div id="productBrowseLeftMenuAdSpace" class="productBrowseLeftMenuAdSpace hiddenOnLoad"> <script type="text/javascript"> $(document).ready(function() { if ("True" === "False") { var adImages = $("#adSpaceContainer638679578317811093 .adSpaceItemContainer"); if (adImages.length > 1) { $("#adSpaceContainer638679578317811093").slick({ arrows: false, dots: true, /*centerMode: true,*/ infinite: true, variableWidth: false, slidesToShow: 1, slidesToScroll: 1, touchThreshold: 10, autoplay: true, autoplaySpeed: 5000, }); } } }); </script> </div> </div> <div id="productBrowseMainContentPane" class="productBrowseMainContentPane"> <div id="productBrowseInfoHeader" class="productBrowseInfoHeader"> </div> <div class="productBrowseResultCountContainer hiddenOnLoad oneColumn"> <span id="productBrowseResultCountTopOneColumn" class="productBrowseResultCount"></span> </div> <div id="productBrowseAppliedFilterContainer" class="productBrowseAppliedFilterContainer"></div> <div id="noResultsFoundDiv" class="noResultsFoundDiv"> No Results Found. Please refine your filter(s) and try again. </div> <div id="resultsDiv"> <ul id="productBrowseListContainer" class="productBrowseListContainer"> </ul> <div id="productBrowseContinuousScrollLoading" class="productBrowseContinuousScrollLoading"> <div class="sp sp-3balls"></div> </div> </div> <div class="productBrowseContinuousScrollContainer hiddenOnLoad"> <div id="productBrowseContinuousScrollBottomContainer" class="productBrowseToggle"> <div class="productBrowseContinuousScrollButtons"> <input id="productBrowseToggleContinousScrollBottom" class="productBrowseToggleButton productBrowseToggle_" type="checkbox" onclick="toggleContinuousScroll(this, '');" title="Toggle continuous scroll" onkeypress="handleKeypressForClick(event)" tabindex="0"/><label class="hiddenLabel" for="productBrowseToggleContinousScrollBottom">Turn on continuous scroll</label> </div> <div class="productBrowseContinuousScrollLabel">Continuous Scroll:</div> </div> </div> <div class="productBrowseResultCountContainer hiddenOnLoad oneColumn"> <span id="productBrowseResultCountBottom" class="productBrowseResultCount"></span> </div> <div id="productBrowsePagingDiv" class="productBrowsePagingContainer hiddenOnLoad"> <input type="hidden" id="hdnTotalRows" name="TotalRows" value="" /> <input type="hidden" id="hdnCurrentPage" name="CurrentPage" value="1" /> <input type="hidden" id="hdnSortBy" name="SortBy" value="" /> <input id="btnFirst" type="button" value="<<" onclick="clickPageBtn('first', '')" class="btn productBrowsePagingBtn"> <input id="btnPrevious" type="button" value="<" onclick="clickPageBtn('previous', '')" class="btn productBrowsePagingBtn"> <span id="productBrowsePagingBtnContainer"></span> <input id="btnNext" type="button" value=">" onclick="clickPageBtn('next', '')" class="btn productBrowsePagingBtn"> <input id="btnLast" type="button" value=">>" onclick="clickPageBtn('last', '')" class="btn productBrowsePagingBtn"> </div> </div> </div> <input name="__RequestVerificationToken" type="hidden" value="CfDJ8IxuUvaeZRREi9I41erTZ0sDA4Gg_O5C6RWR0gEDSrwk1lQNwjFoidA24oAmoz84j0TC-rhtbd4BV9IY1wnGAq1ZSTr-UoHCuOOJu2rDbC6W2u0cKFF1Is4HWZz5PRLRhZfHWdfYqfRysVYHKSd5JbQ" /> <div id="productBrowseFooterSeparator" class="productBrowseFooterSeparator hiddenOnLoad" style="clear:both"><hr /></div> <div id="productBrowseFooterPane" class="productBrowseFooterPane hiddenOnLoad"> <a target="_blank"href="https://www.mathjax.org"> <img title="Powered by MathJax" src="https://www.mathjax.org/badge/badge.gif" border="0" alt="logo with text powered by mathjax" /> </a> </div> <script type="text/javascript"> $(document).ready(function () { initBrowseFilters("", ""); var headerBox = $(".headerLogoSearchContainer")[0].getBoundingClientRect(); $("#productBrowseApplyFilterContainerTop").css("top", headerBox.bottom + "px"); $('.top-of-site-link').click(function () { $("html, body").animate({ scrollTop: 0 }, 0); return false; }); $(window).on("scroll", function (e) { var scroll = $(this).scrollTop(); // check if mobile if($(".headerLogoContainer.mobile").is(":visible")) { // handle floating search container var bottomOfHeaderSearchContainer = $(".headerLogoSearchContainer").offset().top + $(".headerLogoSearchContainer").outerHeight(); if (bottomOfHeaderSearchContainer - $(window).scrollTop() <= 0) { $("#simpleSearchContainer").addClass("headerFloatingSearchContainer"); $(".simpleSearchMenuBtnContainer").addClass("active"); if(scroll < lastScrollTop) showBackToTopButton(); else hideBackToTopButton(); } else { $("#simpleSearchContainer").removeClass("headerFloatingSearchContainer"); $(".simpleSearchMenuBtnContainer").removeClass("active"); hideBackToTopButton(); } } lastScrollTop = scroll; }); $(window).on("resize", function (e) { var currHeaderBox = $(".headerLogoSearchContainer")[0].getBoundingClientRect(); $("#productBrowseApplyFilterContainerTop").css("top", currHeaderBox.bottom + "px"); if (!$(".headerLogoContainer.mobile").is(":visible")) { $("#simpleSearchContainer").removeClass("headerFloatingSearchContainer"); $(".simpleSearchMenuBtnContainer").removeClass("active"); } var onResizeListView = document.getElementById("hdnListView").value; if (onResizeListView != "hscroll") { if (!$(".productBrowseFilterContainer").is(":visible")) $(".productBrowseLeftMenuPane").show(); else { if ($(".productBrowseFilterContainer").hasClass("active")) $(".productBrowseLeftMenuPane").show(); else $(".productBrowseLeftMenuPane").hide(); } } }); initBrowseInfoHeader('11-23'); }); </script> </main> </div> <footer b-nlceesq935 class="footer text-muted"> <div b-nlceesq935> <a b-nlceesq935 href="https://www.ams.org"><img b-nlceesq935 src="/images/footer-line.png" alt="American Mathematical Society" class="img-responsive" title="" style=""></a> </div> <div b-nlceesq935 class="shareContainer"> <ul b-nlceesq935 class="list-inline shareList"> <li b-nlceesq935><a b-nlceesq935 href="https://www.facebook.com/amermathsoc" title="Follow us on Facebook"><i b-nlceesq935 class="fa-brands fa-facebook-f fa-lg"></i></a></li> <li b-nlceesq935><a b-nlceesq935 href="https://twitter.com/amermathsoc" title="Follow us on X"><i b-nlceesq935 class="fa-brands fa-x-twitter fa-lg"></i></a></li> <li b-nlceesq935><a b-nlceesq935 href="https://www.linkedin.com/company/51001" title="Follow us on LinkedIn"><i b-nlceesq935 class="fa-brands fa-linkedin-in fa-lg"></i></a></li> <li b-nlceesq935><a b-nlceesq935 href="https://www.instagram.com/amermathsoc" title="Follow us on Instagram"><i b-nlceesq935 class="fa-brands fa-instagram fa-lg"></i></a></li> <li b-nlceesq935><a b-nlceesq935 href="https://www.youtube.com/amermathsoc" title="Follow us on YouTube"><i b-nlceesq935 class="fa-brands fa-youtube fa-lg"></i></a></li> </ul> </div> <div b-nlceesq935 class="container"> <p b-nlceesq935><a b-nlceesq935 href="https://www.ams.org/bookstore-email-list" target="_blank" class="btn btn-primary footerBtn">Join Our Email List <span b-nlceesq935 class="sr-only">(opens in a new tab)</span><span b-nlceesq935 class="extLink" ></span></a></p> <p b-nlceesq935><a b-nlceesq935 href="https://www.ams.org" target="_blank">American Mathematical Society <span b-nlceesq935 class="sr-only">(opens in a new tab)</span><span b-nlceesq935 class="extLink"></span></a> 路 <a b-nlceesq935 href="https://goo.gl/maps/ZvJdkQEC79p" title="Google map 201 Charles Street Providence, Rhode Island" target="_blank">201 Charles Street Providence, Rhode Island 02904-2213 <span b-nlceesq935 class="sr-only">(opens in a new tab)</span><span b-nlceesq935 class="extLink"></span></a> 路 <a b-nlceesq935 href="https://www.ams.org/reach" target="_blank">Contact Us <span b-nlceesq935 class="sr-only">(opens in a new tab)</span><span b-nlceesq935 class="extLink"></span></a> </p> <p b-nlceesq935><small b-nlceesq935>AMS, American Mathematical Society, the tri-colored AMS logo, and Advancing research, Creating connections, are trademarks and services marks of the American Mathematical Society and registered in the U.S. Patent and Trademark Office.</small></p> <p b-nlceesq935> © <a b-nlceesq935 href="https://www.ams.org/about-us/copyright" target="_blank">Copyright <span b-nlceesq935 class="sr-only">(opens in a new tab)</span><span b-nlceesq935 class="extLink"></span></a> <script> var now = new Date(); document.write(now.getFullYear()); </script>, American Mathematical Society 路 <a b-nlceesq935 href="https://www.ams.org/about-us/privacy" target="_blank">Privacy Statement <span b-nlceesq935 class="sr-only">(opens in a new tab)</span><span b-nlceesq935 class="extLink"></span></a> 路 <a b-nlceesq935 href="https://www.ams.org/tou">Terms of Use</a> 路 <a b-nlceesq935 href="https://www.ams.org/accessibility">Accessibility and AMS Online Content</a> 路 <a b-nlceesq935 href="https://www.ams.org/publications/pubpermissions">Rights and Permissions</a></p> <p b-nlceesq935><a b-nlceesq935 target="_blank" href="/shipping-info">Shipping Information <span b-nlceesq935 class="sr-only">(opens in a new tab)</span><span b-nlceesq935 class="extLink"></span></a> 路 <a b-nlceesq935 target="_blank" href="/international-dist">International Orders <span b-nlceesq935 class="sr-only">(opens in a new tab)</span><span b-nlceesq935 class="extLink"></span></a></p> </div> </footer> <script src="/js/jquery.modal.min.js"></script> </body> </html>