diff --git a/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/__init__.py b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..c4e7baf2c683e27fca27f81e72c348fe8d225089 --- /dev/null +++ b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/__init__.py @@ -0,0 +1,185 @@ +""" +A sub-package for efficiently dealing with polynomials. + +Within the documentation for this sub-package, a "finite power series," +i.e., a polynomial (also referred to simply as a "series") is represented +by a 1-D numpy array of the polynomial's coefficients, ordered from lowest +order term to highest. For example, array([1,2,3]) represents +``P_0 + 2*P_1 + 3*P_2``, where P_n is the n-th order basis polynomial +applicable to the specific module in question, e.g., `polynomial` (which +"wraps" the "standard" basis) or `chebyshev`. For optimal performance, +all operations on polynomials, including evaluation at an argument, are +implemented as operations on the coefficients. Additional (module-specific) +information can be found in the docstring for the module of interest. + +This package provides *convenience classes* for each of six different kinds +of polynomials: + + ======================== ================ + **Name** **Provides** + ======================== ================ + `~polynomial.Polynomial` Power series + `~chebyshev.Chebyshev` Chebyshev series + `~legendre.Legendre` Legendre series + `~laguerre.Laguerre` Laguerre series + `~hermite.Hermite` Hermite series + `~hermite_e.HermiteE` HermiteE series + ======================== ================ + +These *convenience classes* provide a consistent interface for creating, +manipulating, and fitting data with polynomials of different bases. +The convenience classes are the preferred interface for the `~numpy.polynomial` +package, and are available from the ``numpy.polynomial`` namespace. +This eliminates the need to navigate to the corresponding submodules, e.g. +``np.polynomial.Polynomial`` or ``np.polynomial.Chebyshev`` instead of +``np.polynomial.polynomial.Polynomial`` or +``np.polynomial.chebyshev.Chebyshev``, respectively. +The classes provide a more consistent and concise interface than the +type-specific functions defined in the submodules for each type of polynomial. +For example, to fit a Chebyshev polynomial with degree ``1`` to data given +by arrays ``xdata`` and ``ydata``, the +`~chebyshev.Chebyshev.fit` class method:: + + >>> from numpy.polynomial import Chebyshev + >>> c = Chebyshev.fit(xdata, ydata, deg=1) + +is preferred over the `chebyshev.chebfit` function from the +``np.polynomial.chebyshev`` module:: + + >>> from numpy.polynomial.chebyshev import chebfit + >>> c = chebfit(xdata, ydata, deg=1) + +See :doc:`routines.polynomials.classes` for more details. + +Convenience Classes +=================== + +The following lists the various constants and methods common to all of +the classes representing the various kinds of polynomials. In the following, +the term ``Poly`` represents any one of the convenience classes (e.g. +`~polynomial.Polynomial`, `~chebyshev.Chebyshev`, `~hermite.Hermite`, etc.) +while the lowercase ``p`` represents an **instance** of a polynomial class. + +Constants +--------- + +- ``Poly.domain`` -- Default domain +- ``Poly.window`` -- Default window +- ``Poly.basis_name`` -- String used to represent the basis +- ``Poly.maxpower`` -- Maximum value ``n`` such that ``p**n`` is allowed +- ``Poly.nickname`` -- String used in printing + +Creation +-------- + +Methods for creating polynomial instances. + +- ``Poly.basis(degree)`` -- Basis polynomial of given degree +- ``Poly.identity()`` -- ``p`` where ``p(x) = x`` for all ``x`` +- ``Poly.fit(x, y, deg)`` -- ``p`` of degree ``deg`` with coefficients + determined by the least-squares fit to the data ``x``, ``y`` +- ``Poly.fromroots(roots)`` -- ``p`` with specified roots +- ``p.copy()`` -- Create a copy of ``p`` + +Conversion +---------- + +Methods for converting a polynomial instance of one kind to another. + +- ``p.cast(Poly)`` -- Convert ``p`` to instance of kind ``Poly`` +- ``p.convert(Poly)`` -- Convert ``p`` to instance of kind ``Poly`` or map + between ``domain`` and ``window`` + +Calculus +-------- +- ``p.deriv()`` -- Take the derivative of ``p`` +- ``p.integ()`` -- Integrate ``p`` + +Validation +---------- +- ``Poly.has_samecoef(p1, p2)`` -- Check if coefficients match +- ``Poly.has_samedomain(p1, p2)`` -- Check if domains match +- ``Poly.has_sametype(p1, p2)`` -- Check if types match +- ``Poly.has_samewindow(p1, p2)`` -- Check if windows match + +Misc +---- +- ``p.linspace()`` -- Return ``x, p(x)`` at equally-spaced points in ``domain`` +- ``p.mapparms()`` -- Return the parameters for the linear mapping between + ``domain`` and ``window``. +- ``p.roots()`` -- Return the roots of `p`. +- ``p.trim()`` -- Remove trailing coefficients. +- ``p.cutdeg(degree)`` -- Truncate p to given degree +- ``p.truncate(size)`` -- Truncate p to given size + +""" +from .polynomial import Polynomial +from .chebyshev import Chebyshev +from .legendre import Legendre +from .hermite import Hermite +from .hermite_e import HermiteE +from .laguerre import Laguerre + +__all__ = [ + "set_default_printstyle", + "polynomial", "Polynomial", + "chebyshev", "Chebyshev", + "legendre", "Legendre", + "hermite", "Hermite", + "hermite_e", "HermiteE", + "laguerre", "Laguerre", +] + + +def set_default_printstyle(style): + """ + Set the default format for the string representation of polynomials. + + Values for ``style`` must be valid inputs to ``__format__``, i.e. 'ascii' + or 'unicode'. + + Parameters + ---------- + style : str + Format string for default printing style. Must be either 'ascii' or + 'unicode'. + + Notes + ----- + The default format depends on the platform: 'unicode' is used on + Unix-based systems and 'ascii' on Windows. This determination is based on + default font support for the unicode superscript and subscript ranges. + + Examples + -------- + >>> p = np.polynomial.Polynomial([1, 2, 3]) + >>> c = np.polynomial.Chebyshev([1, 2, 3]) + >>> np.polynomial.set_default_printstyle('unicode') + >>> print(p) + 1.0 + 2.0·x + 3.0·x² + >>> print(c) + 1.0 + 2.0·T₁(x) + 3.0·T₂(x) + >>> np.polynomial.set_default_printstyle('ascii') + >>> print(p) + 1.0 + 2.0 x + 3.0 x**2 + >>> print(c) + 1.0 + 2.0 T_1(x) + 3.0 T_2(x) + >>> # Formatting supersedes all class/package-level defaults + >>> print(f"{p:unicode}") + 1.0 + 2.0·x + 3.0·x² + """ + if style not in ('unicode', 'ascii'): + raise ValueError( + f"Unsupported format string '{style}'. Valid options are 'ascii' " + f"and 'unicode'" + ) + _use_unicode = True + if style == 'ascii': + _use_unicode = False + from ._polybase import ABCPolyBase + ABCPolyBase._use_unicode = _use_unicode + + +from numpy._pytesttester import PytestTester +test = PytestTester(__name__) +del PytestTester diff --git a/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/__init__.pyi b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/__init__.pyi new file mode 100644 index 0000000000000000000000000000000000000000..c9d1c27a96c2d8ccfeb9e378a2599c2e70003ee4 --- /dev/null +++ b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/__init__.pyi @@ -0,0 +1,22 @@ +from numpy._pytesttester import PytestTester + +from numpy.polynomial import ( + chebyshev as chebyshev, + hermite as hermite, + hermite_e as hermite_e, + laguerre as laguerre, + legendre as legendre, + polynomial as polynomial, +) +from numpy.polynomial.chebyshev import Chebyshev as Chebyshev +from numpy.polynomial.hermite import Hermite as Hermite +from numpy.polynomial.hermite_e import HermiteE as HermiteE +from numpy.polynomial.laguerre import Laguerre as Laguerre +from numpy.polynomial.legendre import Legendre as Legendre +from numpy.polynomial.polynomial import Polynomial as Polynomial + +__all__: list[str] +__path__: list[str] +test: PytestTester + +def set_default_printstyle(style): ... diff --git a/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/_polybase.py b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/_polybase.py new file mode 100644 index 0000000000000000000000000000000000000000..9730574cf22e22823aaa0c77be9e630425cb2f79 --- /dev/null +++ b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/_polybase.py @@ -0,0 +1,1206 @@ +""" +Abstract base class for the various polynomial Classes. + +The ABCPolyBase class provides the methods needed to implement the common API +for the various polynomial classes. It operates as a mixin, but uses the +abc module from the stdlib, hence it is only available for Python >= 2.6. + +""" +import os +import abc +import numbers + +import numpy as np +from . import polyutils as pu + +__all__ = ['ABCPolyBase'] + +class ABCPolyBase(abc.ABC): + """An abstract base class for immutable series classes. + + ABCPolyBase provides the standard Python numerical methods + '+', '-', '*', '//', '%', 'divmod', '**', and '()' along with the + methods listed below. + + .. versionadded:: 1.9.0 + + Parameters + ---------- + coef : array_like + Series coefficients in order of increasing degree, i.e., + ``(1, 2, 3)`` gives ``1*P_0(x) + 2*P_1(x) + 3*P_2(x)``, where + ``P_i`` is the basis polynomials of degree ``i``. + domain : (2,) array_like, optional + Domain to use. The interval ``[domain[0], domain[1]]`` is mapped + to the interval ``[window[0], window[1]]`` by shifting and scaling. + The default value is the derived class domain. + window : (2,) array_like, optional + Window, see domain for its use. The default value is the + derived class window. + symbol : str, optional + Symbol used to represent the independent variable in string + representations of the polynomial expression, e.g. for printing. + The symbol must be a valid Python identifier. Default value is 'x'. + + .. versionadded:: 1.24 + + Attributes + ---------- + coef : (N,) ndarray + Series coefficients in order of increasing degree. + domain : (2,) ndarray + Domain that is mapped to window. + window : (2,) ndarray + Window that domain is mapped to. + symbol : str + Symbol representing the independent variable. + + Class Attributes + ---------------- + maxpower : int + Maximum power allowed, i.e., the largest number ``n`` such that + ``p(x)**n`` is allowed. This is to limit runaway polynomial size. + domain : (2,) ndarray + Default domain of the class. + window : (2,) ndarray + Default window of the class. + + """ + + # Not hashable + __hash__ = None + + # Opt out of numpy ufuncs and Python ops with ndarray subclasses. + __array_ufunc__ = None + + # Limit runaway size. T_n^m has degree n*m + maxpower = 100 + + # Unicode character mappings for improved __str__ + _superscript_mapping = str.maketrans({ + "0": "⁰", + "1": "¹", + "2": "²", + "3": "³", + "4": "⁴", + "5": "⁵", + "6": "⁶", + "7": "⁷", + "8": "⁸", + "9": "⁹" + }) + _subscript_mapping = str.maketrans({ + "0": "₀", + "1": "₁", + "2": "₂", + "3": "₃", + "4": "₄", + "5": "₅", + "6": "₆", + "7": "₇", + "8": "₈", + "9": "₉" + }) + # Some fonts don't support full unicode character ranges necessary for + # the full set of superscripts and subscripts, including common/default + # fonts in Windows shells/terminals. Therefore, default to ascii-only + # printing on windows. + _use_unicode = not os.name == 'nt' + + @property + def symbol(self): + return self._symbol + + @property + @abc.abstractmethod + def domain(self): + pass + + @property + @abc.abstractmethod + def window(self): + pass + + @property + @abc.abstractmethod + def basis_name(self): + pass + + @staticmethod + @abc.abstractmethod + def _add(c1, c2): + pass + + @staticmethod + @abc.abstractmethod + def _sub(c1, c2): + pass + + @staticmethod + @abc.abstractmethod + def _mul(c1, c2): + pass + + @staticmethod + @abc.abstractmethod + def _div(c1, c2): + pass + + @staticmethod + @abc.abstractmethod + def _pow(c, pow, maxpower=None): + pass + + @staticmethod + @abc.abstractmethod + def _val(x, c): + pass + + @staticmethod + @abc.abstractmethod + def _int(c, m, k, lbnd, scl): + pass + + @staticmethod + @abc.abstractmethod + def _der(c, m, scl): + pass + + @staticmethod + @abc.abstractmethod + def _fit(x, y, deg, rcond, full): + pass + + @staticmethod + @abc.abstractmethod + def _line(off, scl): + pass + + @staticmethod + @abc.abstractmethod + def _roots(c): + pass + + @staticmethod + @abc.abstractmethod + def _fromroots(r): + pass + + def has_samecoef(self, other): + """Check if coefficients match. + + .. versionadded:: 1.6.0 + + Parameters + ---------- + other : class instance + The other class must have the ``coef`` attribute. + + Returns + ------- + bool : boolean + True if the coefficients are the same, False otherwise. + + """ + if len(self.coef) != len(other.coef): + return False + elif not np.all(self.coef == other.coef): + return False + else: + return True + + def has_samedomain(self, other): + """Check if domains match. + + .. versionadded:: 1.6.0 + + Parameters + ---------- + other : class instance + The other class must have the ``domain`` attribute. + + Returns + ------- + bool : boolean + True if the domains are the same, False otherwise. + + """ + return np.all(self.domain == other.domain) + + def has_samewindow(self, other): + """Check if windows match. + + .. versionadded:: 1.6.0 + + Parameters + ---------- + other : class instance + The other class must have the ``window`` attribute. + + Returns + ------- + bool : boolean + True if the windows are the same, False otherwise. + + """ + return np.all(self.window == other.window) + + def has_sametype(self, other): + """Check if types match. + + .. versionadded:: 1.7.0 + + Parameters + ---------- + other : object + Class instance. + + Returns + ------- + bool : boolean + True if other is same class as self + + """ + return isinstance(other, self.__class__) + + def _get_coefficients(self, other): + """Interpret other as polynomial coefficients. + + The `other` argument is checked to see if it is of the same + class as self with identical domain and window. If so, + return its coefficients, otherwise return `other`. + + .. versionadded:: 1.9.0 + + Parameters + ---------- + other : anything + Object to be checked. + + Returns + ------- + coef + The coefficients of`other` if it is a compatible instance, + of ABCPolyBase, otherwise `other`. + + Raises + ------ + TypeError + When `other` is an incompatible instance of ABCPolyBase. + + """ + if isinstance(other, ABCPolyBase): + if not isinstance(other, self.__class__): + raise TypeError("Polynomial types differ") + elif not np.all(self.domain == other.domain): + raise TypeError("Domains differ") + elif not np.all(self.window == other.window): + raise TypeError("Windows differ") + elif self.symbol != other.symbol: + raise ValueError("Polynomial symbols differ") + return other.coef + return other + + def __init__(self, coef, domain=None, window=None, symbol='x'): + [coef] = pu.as_series([coef], trim=False) + self.coef = coef + + if domain is not None: + [domain] = pu.as_series([domain], trim=False) + if len(domain) != 2: + raise ValueError("Domain has wrong number of elements.") + self.domain = domain + + if window is not None: + [window] = pu.as_series([window], trim=False) + if len(window) != 2: + raise ValueError("Window has wrong number of elements.") + self.window = window + + # Validation for symbol + try: + if not symbol.isidentifier(): + raise ValueError( + "Symbol string must be a valid Python identifier" + ) + # If a user passes in something other than a string, the above + # results in an AttributeError. Catch this and raise a more + # informative exception + except AttributeError: + raise TypeError("Symbol must be a non-empty string") + + self._symbol = symbol + + def __repr__(self): + coef = repr(self.coef)[6:-1] + domain = repr(self.domain)[6:-1] + window = repr(self.window)[6:-1] + name = self.__class__.__name__ + return (f"{name}({coef}, domain={domain}, window={window}, " + f"symbol='{self.symbol}')") + + def __format__(self, fmt_str): + if fmt_str == '': + return self.__str__() + if fmt_str not in ('ascii', 'unicode'): + raise ValueError( + f"Unsupported format string '{fmt_str}' passed to " + f"{self.__class__}.__format__. Valid options are " + f"'ascii' and 'unicode'" + ) + if fmt_str == 'ascii': + return self._generate_string(self._str_term_ascii) + return self._generate_string(self._str_term_unicode) + + def __str__(self): + if self._use_unicode: + return self._generate_string(self._str_term_unicode) + return self._generate_string(self._str_term_ascii) + + def _generate_string(self, term_method): + """ + Generate the full string representation of the polynomial, using + ``term_method`` to generate each polynomial term. + """ + # Get configuration for line breaks + linewidth = np.get_printoptions().get('linewidth', 75) + if linewidth < 1: + linewidth = 1 + out = pu.format_float(self.coef[0]) + for i, coef in enumerate(self.coef[1:]): + out += " " + power = str(i + 1) + # Polynomial coefficient + # The coefficient array can be an object array with elements that + # will raise a TypeError with >= 0 (e.g. strings or Python + # complex). In this case, represent the coefficient as-is. + try: + if coef >= 0: + next_term = f"+ " + pu.format_float(coef, parens=True) + else: + next_term = f"- " + pu.format_float(-coef, parens=True) + except TypeError: + next_term = f"+ {coef}" + # Polynomial term + next_term += term_method(power, self.symbol) + # Length of the current line with next term added + line_len = len(out.split('\n')[-1]) + len(next_term) + # If not the last term in the polynomial, it will be two + # characters longer due to the +/- with the next term + if i < len(self.coef[1:]) - 1: + line_len += 2 + # Handle linebreaking + if line_len >= linewidth: + next_term = next_term.replace(" ", "\n", 1) + out += next_term + return out + + @classmethod + def _str_term_unicode(cls, i, arg_str): + """ + String representation of single polynomial term using unicode + characters for superscripts and subscripts. + """ + if cls.basis_name is None: + raise NotImplementedError( + "Subclasses must define either a basis_name, or override " + "_str_term_unicode(cls, i, arg_str)" + ) + return (f"·{cls.basis_name}{i.translate(cls._subscript_mapping)}" + f"({arg_str})") + + @classmethod + def _str_term_ascii(cls, i, arg_str): + """ + String representation of a single polynomial term using ** and _ to + represent superscripts and subscripts, respectively. + """ + if cls.basis_name is None: + raise NotImplementedError( + "Subclasses must define either a basis_name, or override " + "_str_term_ascii(cls, i, arg_str)" + ) + return f" {cls.basis_name}_{i}({arg_str})" + + @classmethod + def _repr_latex_term(cls, i, arg_str, needs_parens): + if cls.basis_name is None: + raise NotImplementedError( + "Subclasses must define either a basis name, or override " + "_repr_latex_term(i, arg_str, needs_parens)") + # since we always add parens, we don't care if the expression needs them + return f"{{{cls.basis_name}}}_{{{i}}}({arg_str})" + + @staticmethod + def _repr_latex_scalar(x, parens=False): + # TODO: we're stuck with disabling math formatting until we handle + # exponents in this function + return r'\text{{{}}}'.format(pu.format_float(x, parens=parens)) + + def _repr_latex_(self): + # get the scaled argument string to the basis functions + off, scale = self.mapparms() + if off == 0 and scale == 1: + term = self.symbol + needs_parens = False + elif scale == 1: + term = f"{self._repr_latex_scalar(off)} + {self.symbol}" + needs_parens = True + elif off == 0: + term = f"{self._repr_latex_scalar(scale)}{self.symbol}" + needs_parens = True + else: + term = ( + f"{self._repr_latex_scalar(off)} + " + f"{self._repr_latex_scalar(scale)}{self.symbol}" + ) + needs_parens = True + + mute = r"\color{{LightGray}}{{{}}}".format + + parts = [] + for i, c in enumerate(self.coef): + # prevent duplication of + and - signs + if i == 0: + coef_str = f"{self._repr_latex_scalar(c)}" + elif not isinstance(c, numbers.Real): + coef_str = f" + ({self._repr_latex_scalar(c)})" + elif not np.signbit(c): + coef_str = f" + {self._repr_latex_scalar(c, parens=True)}" + else: + coef_str = f" - {self._repr_latex_scalar(-c, parens=True)}" + + # produce the string for the term + term_str = self._repr_latex_term(i, term, needs_parens) + if term_str == '1': + part = coef_str + else: + part = rf"{coef_str}\,{term_str}" + + if c == 0: + part = mute(part) + + parts.append(part) + + if parts: + body = ''.join(parts) + else: + # in case somehow there are no coefficients at all + body = '0' + + return rf"${self.symbol} \mapsto {body}$" + + + + # Pickle and copy + + def __getstate__(self): + ret = self.__dict__.copy() + ret['coef'] = self.coef.copy() + ret['domain'] = self.domain.copy() + ret['window'] = self.window.copy() + ret['symbol'] = self.symbol + return ret + + def __setstate__(self, dict): + self.__dict__ = dict + + # Call + + def __call__(self, arg): + off, scl = pu.mapparms(self.domain, self.window) + arg = off + scl*arg + return self._val(arg, self.coef) + + def __iter__(self): + return iter(self.coef) + + def __len__(self): + return len(self.coef) + + # Numeric properties. + + def __neg__(self): + return self.__class__( + -self.coef, self.domain, self.window, self.symbol + ) + + def __pos__(self): + return self + + def __add__(self, other): + othercoef = self._get_coefficients(other) + try: + coef = self._add(self.coef, othercoef) + except Exception: + return NotImplemented + return self.__class__(coef, self.domain, self.window, self.symbol) + + def __sub__(self, other): + othercoef = self._get_coefficients(other) + try: + coef = self._sub(self.coef, othercoef) + except Exception: + return NotImplemented + return self.__class__(coef, self.domain, self.window, self.symbol) + + def __mul__(self, other): + othercoef = self._get_coefficients(other) + try: + coef = self._mul(self.coef, othercoef) + except Exception: + return NotImplemented + return self.__class__(coef, self.domain, self.window, self.symbol) + + def __truediv__(self, other): + # there is no true divide if the rhs is not a Number, although it + # could return the first n elements of an infinite series. + # It is hard to see where n would come from, though. + if not isinstance(other, numbers.Number) or isinstance(other, bool): + raise TypeError( + f"unsupported types for true division: " + f"'{type(self)}', '{type(other)}'" + ) + return self.__floordiv__(other) + + def __floordiv__(self, other): + res = self.__divmod__(other) + if res is NotImplemented: + return res + return res[0] + + def __mod__(self, other): + res = self.__divmod__(other) + if res is NotImplemented: + return res + return res[1] + + def __divmod__(self, other): + othercoef = self._get_coefficients(other) + try: + quo, rem = self._div(self.coef, othercoef) + except ZeroDivisionError: + raise + except Exception: + return NotImplemented + quo = self.__class__(quo, self.domain, self.window, self.symbol) + rem = self.__class__(rem, self.domain, self.window, self.symbol) + return quo, rem + + def __pow__(self, other): + coef = self._pow(self.coef, other, maxpower=self.maxpower) + res = self.__class__(coef, self.domain, self.window, self.symbol) + return res + + def __radd__(self, other): + try: + coef = self._add(other, self.coef) + except Exception: + return NotImplemented + return self.__class__(coef, self.domain, self.window, self.symbol) + + def __rsub__(self, other): + try: + coef = self._sub(other, self.coef) + except Exception: + return NotImplemented + return self.__class__(coef, self.domain, self.window, self.symbol) + + def __rmul__(self, other): + try: + coef = self._mul(other, self.coef) + except Exception: + return NotImplemented + return self.__class__(coef, self.domain, self.window, self.symbol) + + def __rdiv__(self, other): + # set to __floordiv__ /. + return self.__rfloordiv__(other) + + def __rtruediv__(self, other): + # An instance of ABCPolyBase is not considered a + # Number. + return NotImplemented + + def __rfloordiv__(self, other): + res = self.__rdivmod__(other) + if res is NotImplemented: + return res + return res[0] + + def __rmod__(self, other): + res = self.__rdivmod__(other) + if res is NotImplemented: + return res + return res[1] + + def __rdivmod__(self, other): + try: + quo, rem = self._div(other, self.coef) + except ZeroDivisionError: + raise + except Exception: + return NotImplemented + quo = self.__class__(quo, self.domain, self.window, self.symbol) + rem = self.__class__(rem, self.domain, self.window, self.symbol) + return quo, rem + + def __eq__(self, other): + res = (isinstance(other, self.__class__) and + np.all(self.domain == other.domain) and + np.all(self.window == other.window) and + (self.coef.shape == other.coef.shape) and + np.all(self.coef == other.coef) and + (self.symbol == other.symbol)) + return res + + def __ne__(self, other): + return not self.__eq__(other) + + # + # Extra methods. + # + + def copy(self): + """Return a copy. + + Returns + ------- + new_series : series + Copy of self. + + """ + return self.__class__(self.coef, self.domain, self.window, self.symbol) + + def degree(self): + """The degree of the series. + + .. versionadded:: 1.5.0 + + Returns + ------- + degree : int + Degree of the series, one less than the number of coefficients. + + Examples + -------- + + Create a polynomial object for ``1 + 7*x + 4*x**2``: + + >>> poly = np.polynomial.Polynomial([1, 7, 4]) + >>> print(poly) + 1.0 + 7.0·x + 4.0·x² + >>> poly.degree() + 2 + + Note that this method does not check for non-zero coefficients. + You must trim the polynomial to remove any trailing zeroes: + + >>> poly = np.polynomial.Polynomial([1, 7, 0]) + >>> print(poly) + 1.0 + 7.0·x + 0.0·x² + >>> poly.degree() + 2 + >>> poly.trim().degree() + 1 + + """ + return len(self) - 1 + + def cutdeg(self, deg): + """Truncate series to the given degree. + + Reduce the degree of the series to `deg` by discarding the + high order terms. If `deg` is greater than the current degree a + copy of the current series is returned. This can be useful in least + squares where the coefficients of the high degree terms may be very + small. + + .. versionadded:: 1.5.0 + + Parameters + ---------- + deg : non-negative int + The series is reduced to degree `deg` by discarding the high + order terms. The value of `deg` must be a non-negative integer. + + Returns + ------- + new_series : series + New instance of series with reduced degree. + + """ + return self.truncate(deg + 1) + + def trim(self, tol=0): + """Remove trailing coefficients + + Remove trailing coefficients until a coefficient is reached whose + absolute value greater than `tol` or the beginning of the series is + reached. If all the coefficients would be removed the series is set + to ``[0]``. A new series instance is returned with the new + coefficients. The current instance remains unchanged. + + Parameters + ---------- + tol : non-negative number. + All trailing coefficients less than `tol` will be removed. + + Returns + ------- + new_series : series + New instance of series with trimmed coefficients. + + """ + coef = pu.trimcoef(self.coef, tol) + return self.__class__(coef, self.domain, self.window, self.symbol) + + def truncate(self, size): + """Truncate series to length `size`. + + Reduce the series to length `size` by discarding the high + degree terms. The value of `size` must be a positive integer. This + can be useful in least squares where the coefficients of the + high degree terms may be very small. + + Parameters + ---------- + size : positive int + The series is reduced to length `size` by discarding the high + degree terms. The value of `size` must be a positive integer. + + Returns + ------- + new_series : series + New instance of series with truncated coefficients. + + """ + isize = int(size) + if isize != size or isize < 1: + raise ValueError("size must be a positive integer") + if isize >= len(self.coef): + coef = self.coef + else: + coef = self.coef[:isize] + return self.__class__(coef, self.domain, self.window, self.symbol) + + def convert(self, domain=None, kind=None, window=None): + """Convert series to a different kind and/or domain and/or window. + + Parameters + ---------- + domain : array_like, optional + The domain of the converted series. If the value is None, + the default domain of `kind` is used. + kind : class, optional + The polynomial series type class to which the current instance + should be converted. If kind is None, then the class of the + current instance is used. + window : array_like, optional + The window of the converted series. If the value is None, + the default window of `kind` is used. + + Returns + ------- + new_series : series + The returned class can be of different type than the current + instance and/or have a different domain and/or different + window. + + Notes + ----- + Conversion between domains and class types can result in + numerically ill defined series. + + """ + if kind is None: + kind = self.__class__ + if domain is None: + domain = kind.domain + if window is None: + window = kind.window + return self(kind.identity(domain, window=window, symbol=self.symbol)) + + def mapparms(self): + """Return the mapping parameters. + + The returned values define a linear map ``off + scl*x`` that is + applied to the input arguments before the series is evaluated. The + map depends on the ``domain`` and ``window``; if the current + ``domain`` is equal to the ``window`` the resulting map is the + identity. If the coefficients of the series instance are to be + used by themselves outside this class, then the linear function + must be substituted for the ``x`` in the standard representation of + the base polynomials. + + Returns + ------- + off, scl : float or complex + The mapping function is defined by ``off + scl*x``. + + Notes + ----- + If the current domain is the interval ``[l1, r1]`` and the window + is ``[l2, r2]``, then the linear mapping function ``L`` is + defined by the equations:: + + L(l1) = l2 + L(r1) = r2 + + """ + return pu.mapparms(self.domain, self.window) + + def integ(self, m=1, k=[], lbnd=None): + """Integrate. + + Return a series instance that is the definite integral of the + current series. + + Parameters + ---------- + m : non-negative int + The number of integrations to perform. + k : array_like + Integration constants. The first constant is applied to the + first integration, the second to the second, and so on. The + list of values must less than or equal to `m` in length and any + missing values are set to zero. + lbnd : Scalar + The lower bound of the definite integral. + + Returns + ------- + new_series : series + A new series representing the integral. The domain is the same + as the domain of the integrated series. + + """ + off, scl = self.mapparms() + if lbnd is None: + lbnd = 0 + else: + lbnd = off + scl*lbnd + coef = self._int(self.coef, m, k, lbnd, 1./scl) + return self.__class__(coef, self.domain, self.window, self.symbol) + + def deriv(self, m=1): + """Differentiate. + + Return a series instance of that is the derivative of the current + series. + + Parameters + ---------- + m : non-negative int + Find the derivative of order `m`. + + Returns + ------- + new_series : series + A new series representing the derivative. The domain is the same + as the domain of the differentiated series. + + """ + off, scl = self.mapparms() + coef = self._der(self.coef, m, scl) + return self.__class__(coef, self.domain, self.window, self.symbol) + + def roots(self): + """Return the roots of the series polynomial. + + Compute the roots for the series. Note that the accuracy of the + roots decreases the further outside the `domain` they lie. + + Returns + ------- + roots : ndarray + Array containing the roots of the series. + + """ + roots = self._roots(self.coef) + return pu.mapdomain(roots, self.window, self.domain) + + def linspace(self, n=100, domain=None): + """Return x, y values at equally spaced points in domain. + + Returns the x, y values at `n` linearly spaced points across the + domain. Here y is the value of the polynomial at the points x. By + default the domain is the same as that of the series instance. + This method is intended mostly as a plotting aid. + + .. versionadded:: 1.5.0 + + Parameters + ---------- + n : int, optional + Number of point pairs to return. The default value is 100. + domain : {None, array_like}, optional + If not None, the specified domain is used instead of that of + the calling instance. It should be of the form ``[beg,end]``. + The default is None which case the class domain is used. + + Returns + ------- + x, y : ndarray + x is equal to linspace(self.domain[0], self.domain[1], n) and + y is the series evaluated at element of x. + + """ + if domain is None: + domain = self.domain + x = np.linspace(domain[0], domain[1], n) + y = self(x) + return x, y + + @classmethod + def fit(cls, x, y, deg, domain=None, rcond=None, full=False, w=None, + window=None, symbol='x'): + """Least squares fit to data. + + Return a series instance that is the least squares fit to the data + `y` sampled at `x`. The domain of the returned instance can be + specified and this will often result in a superior fit with less + chance of ill conditioning. + + Parameters + ---------- + x : array_like, shape (M,) + x-coordinates of the M sample points ``(x[i], y[i])``. + y : array_like, shape (M,) + y-coordinates of the M sample points ``(x[i], y[i])``. + deg : int or 1-D array_like + Degree(s) of the fitting polynomials. If `deg` is a single integer + all terms up to and including the `deg`'th term are included in the + fit. For NumPy versions >= 1.11.0 a list of integers specifying the + degrees of the terms to include may be used instead. + domain : {None, [beg, end], []}, optional + Domain to use for the returned series. If ``None``, + then a minimal domain that covers the points `x` is chosen. If + ``[]`` the class domain is used. The default value was the + class domain in NumPy 1.4 and ``None`` in later versions. + The ``[]`` option was added in numpy 1.5.0. + rcond : float, optional + Relative condition number of the fit. Singular values smaller + than this relative to the largest singular value will be + ignored. The default value is len(x)*eps, where eps is the + relative precision of the float type, about 2e-16 in most + cases. + full : bool, optional + Switch determining nature of return value. When it is False + (the default) just the coefficients are returned, when True + diagnostic information from the singular value decomposition is + also returned. + w : array_like, shape (M,), optional + Weights. If not None, the weight ``w[i]`` applies to the unsquared + residual ``y[i] - y_hat[i]`` at ``x[i]``. Ideally the weights are + chosen so that the errors of the products ``w[i]*y[i]`` all have + the same variance. When using inverse-variance weighting, use + ``w[i] = 1/sigma(y[i])``. The default value is None. + + .. versionadded:: 1.5.0 + window : {[beg, end]}, optional + Window to use for the returned series. The default + value is the default class domain + + .. versionadded:: 1.6.0 + symbol : str, optional + Symbol representing the independent variable. Default is 'x'. + + Returns + ------- + new_series : series + A series that represents the least squares fit to the data and + has the domain and window specified in the call. If the + coefficients for the unscaled and unshifted basis polynomials are + of interest, do ``new_series.convert().coef``. + + [resid, rank, sv, rcond] : list + These values are only returned if ``full == True`` + + - resid -- sum of squared residuals of the least squares fit + - rank -- the numerical rank of the scaled Vandermonde matrix + - sv -- singular values of the scaled Vandermonde matrix + - rcond -- value of `rcond`. + + For more details, see `linalg.lstsq`. + + """ + if domain is None: + domain = pu.getdomain(x) + elif type(domain) is list and len(domain) == 0: + domain = cls.domain + + if window is None: + window = cls.window + + xnew = pu.mapdomain(x, domain, window) + res = cls._fit(xnew, y, deg, w=w, rcond=rcond, full=full) + if full: + [coef, status] = res + return ( + cls(coef, domain=domain, window=window, symbol=symbol), status + ) + else: + coef = res + return cls(coef, domain=domain, window=window, symbol=symbol) + + @classmethod + def fromroots(cls, roots, domain=[], window=None, symbol='x'): + """Return series instance that has the specified roots. + + Returns a series representing the product + ``(x - r[0])*(x - r[1])*...*(x - r[n-1])``, where ``r`` is a + list of roots. + + Parameters + ---------- + roots : array_like + List of roots. + domain : {[], None, array_like}, optional + Domain for the resulting series. If None the domain is the + interval from the smallest root to the largest. If [] the + domain is the class domain. The default is []. + window : {None, array_like}, optional + Window for the returned series. If None the class window is + used. The default is None. + symbol : str, optional + Symbol representing the independent variable. Default is 'x'. + + Returns + ------- + new_series : series + Series with the specified roots. + + """ + [roots] = pu.as_series([roots], trim=False) + if domain is None: + domain = pu.getdomain(roots) + elif type(domain) is list and len(domain) == 0: + domain = cls.domain + + if window is None: + window = cls.window + + deg = len(roots) + off, scl = pu.mapparms(domain, window) + rnew = off + scl*roots + coef = cls._fromroots(rnew) / scl**deg + return cls(coef, domain=domain, window=window, symbol=symbol) + + @classmethod + def identity(cls, domain=None, window=None, symbol='x'): + """Identity function. + + If ``p`` is the returned series, then ``p(x) == x`` for all + values of x. + + Parameters + ---------- + domain : {None, array_like}, optional + If given, the array must be of the form ``[beg, end]``, where + ``beg`` and ``end`` are the endpoints of the domain. If None is + given then the class domain is used. The default is None. + window : {None, array_like}, optional + If given, the resulting array must be if the form + ``[beg, end]``, where ``beg`` and ``end`` are the endpoints of + the window. If None is given then the class window is used. The + default is None. + symbol : str, optional + Symbol representing the independent variable. Default is 'x'. + + Returns + ------- + new_series : series + Series of representing the identity. + + """ + if domain is None: + domain = cls.domain + if window is None: + window = cls.window + off, scl = pu.mapparms(window, domain) + coef = cls._line(off, scl) + return cls(coef, domain, window, symbol) + + @classmethod + def basis(cls, deg, domain=None, window=None, symbol='x'): + """Series basis polynomial of degree `deg`. + + Returns the series representing the basis polynomial of degree `deg`. + + .. versionadded:: 1.7.0 + + Parameters + ---------- + deg : int + Degree of the basis polynomial for the series. Must be >= 0. + domain : {None, array_like}, optional + If given, the array must be of the form ``[beg, end]``, where + ``beg`` and ``end`` are the endpoints of the domain. If None is + given then the class domain is used. The default is None. + window : {None, array_like}, optional + If given, the resulting array must be if the form + ``[beg, end]``, where ``beg`` and ``end`` are the endpoints of + the window. If None is given then the class window is used. The + default is None. + symbol : str, optional + Symbol representing the independent variable. Default is 'x'. + + Returns + ------- + new_series : series + A series with the coefficient of the `deg` term set to one and + all others zero. + + """ + if domain is None: + domain = cls.domain + if window is None: + window = cls.window + ideg = int(deg) + + if ideg != deg or ideg < 0: + raise ValueError("deg must be non-negative integer") + return cls([0]*ideg + [1], domain, window, symbol) + + @classmethod + def cast(cls, series, domain=None, window=None): + """Convert series to series of this class. + + The `series` is expected to be an instance of some polynomial + series of one of the types supported by by the numpy.polynomial + module, but could be some other class that supports the convert + method. + + .. versionadded:: 1.7.0 + + Parameters + ---------- + series : series + The series instance to be converted. + domain : {None, array_like}, optional + If given, the array must be of the form ``[beg, end]``, where + ``beg`` and ``end`` are the endpoints of the domain. If None is + given then the class domain is used. The default is None. + window : {None, array_like}, optional + If given, the resulting array must be if the form + ``[beg, end]``, where ``beg`` and ``end`` are the endpoints of + the window. If None is given then the class window is used. The + default is None. + + Returns + ------- + new_series : series + A series of the same kind as the calling class and equal to + `series` when evaluated. + + See Also + -------- + convert : similar instance method + + """ + if domain is None: + domain = cls.domain + if window is None: + window = cls.window + return series.convert(domain, cls, window) diff --git a/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/_polybase.pyi b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/_polybase.pyi new file mode 100644 index 0000000000000000000000000000000000000000..25c740dbedd02ca6c3f6e1beb155876a967cb57c --- /dev/null +++ b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/_polybase.pyi @@ -0,0 +1,71 @@ +import abc +from typing import Any, ClassVar + +__all__: list[str] + +class ABCPolyBase(abc.ABC): + __hash__: ClassVar[None] # type: ignore[assignment] + __array_ufunc__: ClassVar[None] + maxpower: ClassVar[int] + coef: Any + @property + def symbol(self) -> str: ... + @property + @abc.abstractmethod + def domain(self): ... + @property + @abc.abstractmethod + def window(self): ... + @property + @abc.abstractmethod + def basis_name(self): ... + def has_samecoef(self, other): ... + def has_samedomain(self, other): ... + def has_samewindow(self, other): ... + def has_sametype(self, other): ... + def __init__(self, coef, domain=..., window=..., symbol: str = ...) -> None: ... + def __format__(self, fmt_str): ... + def __call__(self, arg): ... + def __iter__(self): ... + def __len__(self): ... + def __neg__(self): ... + def __pos__(self): ... + def __add__(self, other): ... + def __sub__(self, other): ... + def __mul__(self, other): ... + def __truediv__(self, other): ... + def __floordiv__(self, other): ... + def __mod__(self, other): ... + def __divmod__(self, other): ... + def __pow__(self, other): ... + def __radd__(self, other): ... + def __rsub__(self, other): ... + def __rmul__(self, other): ... + def __rdiv__(self, other): ... + def __rtruediv__(self, other): ... + def __rfloordiv__(self, other): ... + def __rmod__(self, other): ... + def __rdivmod__(self, other): ... + def __eq__(self, other): ... + def __ne__(self, other): ... + def copy(self): ... + def degree(self): ... + def cutdeg(self, deg): ... + def trim(self, tol=...): ... + def truncate(self, size): ... + def convert(self, domain=..., kind=..., window=...): ... + def mapparms(self): ... + def integ(self, m=..., k = ..., lbnd=...): ... + def deriv(self, m=...): ... + def roots(self): ... + def linspace(self, n=..., domain=...): ... + @classmethod + def fit(cls, x, y, deg, domain=..., rcond=..., full=..., w=..., window=...): ... + @classmethod + def fromroots(cls, roots, domain = ..., window=...): ... + @classmethod + def identity(cls, domain=..., window=...): ... + @classmethod + def basis(cls, deg, domain=..., window=...): ... + @classmethod + def cast(cls, series, domain=..., window=...): ... diff --git a/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/chebyshev.py b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/chebyshev.py new file mode 100644 index 0000000000000000000000000000000000000000..efbe13e0cadb27e29bea430a858dea5110621a0c --- /dev/null +++ b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/chebyshev.py @@ -0,0 +1,2082 @@ +""" +==================================================== +Chebyshev Series (:mod:`numpy.polynomial.chebyshev`) +==================================================== + +This module provides a number of objects (mostly functions) useful for +dealing with Chebyshev series, including a `Chebyshev` class that +encapsulates the usual arithmetic operations. (General information +on how this module represents and works with such polynomials is in the +docstring for its "parent" sub-package, `numpy.polynomial`). + +Classes +------- + +.. autosummary:: + :toctree: generated/ + + Chebyshev + + +Constants +--------- + +.. autosummary:: + :toctree: generated/ + + chebdomain + chebzero + chebone + chebx + +Arithmetic +---------- + +.. autosummary:: + :toctree: generated/ + + chebadd + chebsub + chebmulx + chebmul + chebdiv + chebpow + chebval + chebval2d + chebval3d + chebgrid2d + chebgrid3d + +Calculus +-------- + +.. autosummary:: + :toctree: generated/ + + chebder + chebint + +Misc Functions +-------------- + +.. autosummary:: + :toctree: generated/ + + chebfromroots + chebroots + chebvander + chebvander2d + chebvander3d + chebgauss + chebweight + chebcompanion + chebfit + chebpts1 + chebpts2 + chebtrim + chebline + cheb2poly + poly2cheb + chebinterpolate + +See also +-------- +`numpy.polynomial` + +Notes +----- +The implementations of multiplication, division, integration, and +differentiation use the algebraic identities [1]_: + +.. math:: + T_n(x) = \\frac{z^n + z^{-n}}{2} \\\\ + z\\frac{dx}{dz} = \\frac{z - z^{-1}}{2}. + +where + +.. math:: x = \\frac{z + z^{-1}}{2}. + +These identities allow a Chebyshev series to be expressed as a finite, +symmetric Laurent series. In this module, this sort of Laurent series +is referred to as a "z-series." + +References +---------- +.. [1] A. T. Benjamin, et al., "Combinatorial Trigonometry with Chebyshev + Polynomials," *Journal of Statistical Planning and Inference 14*, 2008 + (https://web.archive.org/web/20080221202153/https://www.math.hmc.edu/~benjamin/papers/CombTrig.pdf, pg. 4) + +""" +import numpy as np +import numpy.linalg as la +from numpy.core.multiarray import normalize_axis_index + +from . import polyutils as pu +from ._polybase import ABCPolyBase + +__all__ = [ + 'chebzero', 'chebone', 'chebx', 'chebdomain', 'chebline', 'chebadd', + 'chebsub', 'chebmulx', 'chebmul', 'chebdiv', 'chebpow', 'chebval', + 'chebder', 'chebint', 'cheb2poly', 'poly2cheb', 'chebfromroots', + 'chebvander', 'chebfit', 'chebtrim', 'chebroots', 'chebpts1', + 'chebpts2', 'Chebyshev', 'chebval2d', 'chebval3d', 'chebgrid2d', + 'chebgrid3d', 'chebvander2d', 'chebvander3d', 'chebcompanion', + 'chebgauss', 'chebweight', 'chebinterpolate'] + +chebtrim = pu.trimcoef + +# +# A collection of functions for manipulating z-series. These are private +# functions and do minimal error checking. +# + +def _cseries_to_zseries(c): + """Convert Chebyshev series to z-series. + + Convert a Chebyshev series to the equivalent z-series. The result is + never an empty array. The dtype of the return is the same as that of + the input. No checks are run on the arguments as this routine is for + internal use. + + Parameters + ---------- + c : 1-D ndarray + Chebyshev coefficients, ordered from low to high + + Returns + ------- + zs : 1-D ndarray + Odd length symmetric z-series, ordered from low to high. + + """ + n = c.size + zs = np.zeros(2*n-1, dtype=c.dtype) + zs[n-1:] = c/2 + return zs + zs[::-1] + + +def _zseries_to_cseries(zs): + """Convert z-series to a Chebyshev series. + + Convert a z series to the equivalent Chebyshev series. The result is + never an empty array. The dtype of the return is the same as that of + the input. No checks are run on the arguments as this routine is for + internal use. + + Parameters + ---------- + zs : 1-D ndarray + Odd length symmetric z-series, ordered from low to high. + + Returns + ------- + c : 1-D ndarray + Chebyshev coefficients, ordered from low to high. + + """ + n = (zs.size + 1)//2 + c = zs[n-1:].copy() + c[1:n] *= 2 + return c + + +def _zseries_mul(z1, z2): + """Multiply two z-series. + + Multiply two z-series to produce a z-series. + + Parameters + ---------- + z1, z2 : 1-D ndarray + The arrays must be 1-D but this is not checked. + + Returns + ------- + product : 1-D ndarray + The product z-series. + + Notes + ----- + This is simply convolution. If symmetric/anti-symmetric z-series are + denoted by S/A then the following rules apply: + + S*S, A*A -> S + S*A, A*S -> A + + """ + return np.convolve(z1, z2) + + +def _zseries_div(z1, z2): + """Divide the first z-series by the second. + + Divide `z1` by `z2` and return the quotient and remainder as z-series. + Warning: this implementation only applies when both z1 and z2 have the + same symmetry, which is sufficient for present purposes. + + Parameters + ---------- + z1, z2 : 1-D ndarray + The arrays must be 1-D and have the same symmetry, but this is not + checked. + + Returns + ------- + + (quotient, remainder) : 1-D ndarrays + Quotient and remainder as z-series. + + Notes + ----- + This is not the same as polynomial division on account of the desired form + of the remainder. If symmetric/anti-symmetric z-series are denoted by S/A + then the following rules apply: + + S/S -> S,S + A/A -> S,A + + The restriction to types of the same symmetry could be fixed but seems like + unneeded generality. There is no natural form for the remainder in the case + where there is no symmetry. + + """ + z1 = z1.copy() + z2 = z2.copy() + lc1 = len(z1) + lc2 = len(z2) + if lc2 == 1: + z1 /= z2 + return z1, z1[:1]*0 + elif lc1 < lc2: + return z1[:1]*0, z1 + else: + dlen = lc1 - lc2 + scl = z2[0] + z2 /= scl + quo = np.empty(dlen + 1, dtype=z1.dtype) + i = 0 + j = dlen + while i < j: + r = z1[i] + quo[i] = z1[i] + quo[dlen - i] = r + tmp = r*z2 + z1[i:i+lc2] -= tmp + z1[j:j+lc2] -= tmp + i += 1 + j -= 1 + r = z1[i] + quo[i] = r + tmp = r*z2 + z1[i:i+lc2] -= tmp + quo /= scl + rem = z1[i+1:i-1+lc2].copy() + return quo, rem + + +def _zseries_der(zs): + """Differentiate a z-series. + + The derivative is with respect to x, not z. This is achieved using the + chain rule and the value of dx/dz given in the module notes. + + Parameters + ---------- + zs : z-series + The z-series to differentiate. + + Returns + ------- + derivative : z-series + The derivative + + Notes + ----- + The zseries for x (ns) has been multiplied by two in order to avoid + using floats that are incompatible with Decimal and likely other + specialized scalar types. This scaling has been compensated by + multiplying the value of zs by two also so that the two cancels in the + division. + + """ + n = len(zs)//2 + ns = np.array([-1, 0, 1], dtype=zs.dtype) + zs *= np.arange(-n, n+1)*2 + d, r = _zseries_div(zs, ns) + return d + + +def _zseries_int(zs): + """Integrate a z-series. + + The integral is with respect to x, not z. This is achieved by a change + of variable using dx/dz given in the module notes. + + Parameters + ---------- + zs : z-series + The z-series to integrate + + Returns + ------- + integral : z-series + The indefinite integral + + Notes + ----- + The zseries for x (ns) has been multiplied by two in order to avoid + using floats that are incompatible with Decimal and likely other + specialized scalar types. This scaling has been compensated by + dividing the resulting zs by two. + + """ + n = 1 + len(zs)//2 + ns = np.array([-1, 0, 1], dtype=zs.dtype) + zs = _zseries_mul(zs, ns) + div = np.arange(-n, n+1)*2 + zs[:n] /= div[:n] + zs[n+1:] /= div[n+1:] + zs[n] = 0 + return zs + +# +# Chebyshev series functions +# + + +def poly2cheb(pol): + """ + Convert a polynomial to a Chebyshev series. + + Convert an array representing the coefficients of a polynomial (relative + to the "standard" basis) ordered from lowest degree to highest, to an + array of the coefficients of the equivalent Chebyshev series, ordered + from lowest to highest degree. + + Parameters + ---------- + pol : array_like + 1-D array containing the polynomial coefficients + + Returns + ------- + c : ndarray + 1-D array containing the coefficients of the equivalent Chebyshev + series. + + See Also + -------- + cheb2poly + + Notes + ----- + The easy way to do conversions between polynomial basis sets + is to use the convert method of a class instance. + + Examples + -------- + >>> from numpy import polynomial as P + >>> p = P.Polynomial(range(4)) + >>> p + Polynomial([0., 1., 2., 3.], domain=[-1, 1], window=[-1, 1]) + >>> c = p.convert(kind=P.Chebyshev) + >>> c + Chebyshev([1. , 3.25, 1. , 0.75], domain=[-1., 1.], window=[-1., 1.]) + >>> P.chebyshev.poly2cheb(range(4)) + array([1. , 3.25, 1. , 0.75]) + + """ + [pol] = pu.as_series([pol]) + deg = len(pol) - 1 + res = 0 + for i in range(deg, -1, -1): + res = chebadd(chebmulx(res), pol[i]) + return res + + +def cheb2poly(c): + """ + Convert a Chebyshev series to a polynomial. + + Convert an array representing the coefficients of a Chebyshev series, + ordered from lowest degree to highest, to an array of the coefficients + of the equivalent polynomial (relative to the "standard" basis) ordered + from lowest to highest degree. + + Parameters + ---------- + c : array_like + 1-D array containing the Chebyshev series coefficients, ordered + from lowest order term to highest. + + Returns + ------- + pol : ndarray + 1-D array containing the coefficients of the equivalent polynomial + (relative to the "standard" basis) ordered from lowest order term + to highest. + + See Also + -------- + poly2cheb + + Notes + ----- + The easy way to do conversions between polynomial basis sets + is to use the convert method of a class instance. + + Examples + -------- + >>> from numpy import polynomial as P + >>> c = P.Chebyshev(range(4)) + >>> c + Chebyshev([0., 1., 2., 3.], domain=[-1, 1], window=[-1, 1]) + >>> p = c.convert(kind=P.Polynomial) + >>> p + Polynomial([-2., -8., 4., 12.], domain=[-1., 1.], window=[-1., 1.]) + >>> P.chebyshev.cheb2poly(range(4)) + array([-2., -8., 4., 12.]) + + """ + from .polynomial import polyadd, polysub, polymulx + + [c] = pu.as_series([c]) + n = len(c) + if n < 3: + return c + else: + c0 = c[-2] + c1 = c[-1] + # i is the current degree of c1 + for i in range(n - 1, 1, -1): + tmp = c0 + c0 = polysub(c[i - 2], c1) + c1 = polyadd(tmp, polymulx(c1)*2) + return polyadd(c0, polymulx(c1)) + + +# +# These are constant arrays are of integer type so as to be compatible +# with the widest range of other types, such as Decimal. +# + +# Chebyshev default domain. +chebdomain = np.array([-1, 1]) + +# Chebyshev coefficients representing zero. +chebzero = np.array([0]) + +# Chebyshev coefficients representing one. +chebone = np.array([1]) + +# Chebyshev coefficients representing the identity x. +chebx = np.array([0, 1]) + + +def chebline(off, scl): + """ + Chebyshev series whose graph is a straight line. + + Parameters + ---------- + off, scl : scalars + The specified line is given by ``off + scl*x``. + + Returns + ------- + y : ndarray + This module's representation of the Chebyshev series for + ``off + scl*x``. + + See Also + -------- + numpy.polynomial.polynomial.polyline + numpy.polynomial.legendre.legline + numpy.polynomial.laguerre.lagline + numpy.polynomial.hermite.hermline + numpy.polynomial.hermite_e.hermeline + + Examples + -------- + >>> import numpy.polynomial.chebyshev as C + >>> C.chebline(3,2) + array([3, 2]) + >>> C.chebval(-3, C.chebline(3,2)) # should be -3 + -3.0 + + """ + if scl != 0: + return np.array([off, scl]) + else: + return np.array([off]) + + +def chebfromroots(roots): + """ + Generate a Chebyshev series with given roots. + + The function returns the coefficients of the polynomial + + .. math:: p(x) = (x - r_0) * (x - r_1) * ... * (x - r_n), + + in Chebyshev form, where the `r_n` are the roots specified in `roots`. + If a zero has multiplicity n, then it must appear in `roots` n times. + For instance, if 2 is a root of multiplicity three and 3 is a root of + multiplicity 2, then `roots` looks something like [2, 2, 2, 3, 3]. The + roots can appear in any order. + + If the returned coefficients are `c`, then + + .. math:: p(x) = c_0 + c_1 * T_1(x) + ... + c_n * T_n(x) + + The coefficient of the last term is not generally 1 for monic + polynomials in Chebyshev form. + + Parameters + ---------- + roots : array_like + Sequence containing the roots. + + Returns + ------- + out : ndarray + 1-D array of coefficients. If all roots are real then `out` is a + real array, if some of the roots are complex, then `out` is complex + even if all the coefficients in the result are real (see Examples + below). + + See Also + -------- + numpy.polynomial.polynomial.polyfromroots + numpy.polynomial.legendre.legfromroots + numpy.polynomial.laguerre.lagfromroots + numpy.polynomial.hermite.hermfromroots + numpy.polynomial.hermite_e.hermefromroots + + Examples + -------- + >>> import numpy.polynomial.chebyshev as C + >>> C.chebfromroots((-1,0,1)) # x^3 - x relative to the standard basis + array([ 0. , -0.25, 0. , 0.25]) + >>> j = complex(0,1) + >>> C.chebfromroots((-j,j)) # x^2 + 1 relative to the standard basis + array([1.5+0.j, 0. +0.j, 0.5+0.j]) + + """ + return pu._fromroots(chebline, chebmul, roots) + + +def chebadd(c1, c2): + """ + Add one Chebyshev series to another. + + Returns the sum of two Chebyshev series `c1` + `c2`. The arguments + are sequences of coefficients ordered from lowest order term to + highest, i.e., [1,2,3] represents the series ``T_0 + 2*T_1 + 3*T_2``. + + Parameters + ---------- + c1, c2 : array_like + 1-D arrays of Chebyshev series coefficients ordered from low to + high. + + Returns + ------- + out : ndarray + Array representing the Chebyshev series of their sum. + + See Also + -------- + chebsub, chebmulx, chebmul, chebdiv, chebpow + + Notes + ----- + Unlike multiplication, division, etc., the sum of two Chebyshev series + is a Chebyshev series (without having to "reproject" the result onto + the basis set) so addition, just like that of "standard" polynomials, + is simply "component-wise." + + Examples + -------- + >>> from numpy.polynomial import chebyshev as C + >>> c1 = (1,2,3) + >>> c2 = (3,2,1) + >>> C.chebadd(c1,c2) + array([4., 4., 4.]) + + """ + return pu._add(c1, c2) + + +def chebsub(c1, c2): + """ + Subtract one Chebyshev series from another. + + Returns the difference of two Chebyshev series `c1` - `c2`. The + sequences of coefficients are from lowest order term to highest, i.e., + [1,2,3] represents the series ``T_0 + 2*T_1 + 3*T_2``. + + Parameters + ---------- + c1, c2 : array_like + 1-D arrays of Chebyshev series coefficients ordered from low to + high. + + Returns + ------- + out : ndarray + Of Chebyshev series coefficients representing their difference. + + See Also + -------- + chebadd, chebmulx, chebmul, chebdiv, chebpow + + Notes + ----- + Unlike multiplication, division, etc., the difference of two Chebyshev + series is a Chebyshev series (without having to "reproject" the result + onto the basis set) so subtraction, just like that of "standard" + polynomials, is simply "component-wise." + + Examples + -------- + >>> from numpy.polynomial import chebyshev as C + >>> c1 = (1,2,3) + >>> c2 = (3,2,1) + >>> C.chebsub(c1,c2) + array([-2., 0., 2.]) + >>> C.chebsub(c2,c1) # -C.chebsub(c1,c2) + array([ 2., 0., -2.]) + + """ + return pu._sub(c1, c2) + + +def chebmulx(c): + """Multiply a Chebyshev series by x. + + Multiply the polynomial `c` by x, where x is the independent + variable. + + + Parameters + ---------- + c : array_like + 1-D array of Chebyshev series coefficients ordered from low to + high. + + Returns + ------- + out : ndarray + Array representing the result of the multiplication. + + Notes + ----- + + .. versionadded:: 1.5.0 + + Examples + -------- + >>> from numpy.polynomial import chebyshev as C + >>> C.chebmulx([1,2,3]) + array([1. , 2.5, 1. , 1.5]) + + """ + # c is a trimmed copy + [c] = pu.as_series([c]) + # The zero series needs special treatment + if len(c) == 1 and c[0] == 0: + return c + + prd = np.empty(len(c) + 1, dtype=c.dtype) + prd[0] = c[0]*0 + prd[1] = c[0] + if len(c) > 1: + tmp = c[1:]/2 + prd[2:] = tmp + prd[0:-2] += tmp + return prd + + +def chebmul(c1, c2): + """ + Multiply one Chebyshev series by another. + + Returns the product of two Chebyshev series `c1` * `c2`. The arguments + are sequences of coefficients, from lowest order "term" to highest, + e.g., [1,2,3] represents the series ``T_0 + 2*T_1 + 3*T_2``. + + Parameters + ---------- + c1, c2 : array_like + 1-D arrays of Chebyshev series coefficients ordered from low to + high. + + Returns + ------- + out : ndarray + Of Chebyshev series coefficients representing their product. + + See Also + -------- + chebadd, chebsub, chebmulx, chebdiv, chebpow + + Notes + ----- + In general, the (polynomial) product of two C-series results in terms + that are not in the Chebyshev polynomial basis set. Thus, to express + the product as a C-series, it is typically necessary to "reproject" + the product onto said basis set, which typically produces + "unintuitive live" (but correct) results; see Examples section below. + + Examples + -------- + >>> from numpy.polynomial import chebyshev as C + >>> c1 = (1,2,3) + >>> c2 = (3,2,1) + >>> C.chebmul(c1,c2) # multiplication requires "reprojection" + array([ 6.5, 12. , 12. , 4. , 1.5]) + + """ + # c1, c2 are trimmed copies + [c1, c2] = pu.as_series([c1, c2]) + z1 = _cseries_to_zseries(c1) + z2 = _cseries_to_zseries(c2) + prd = _zseries_mul(z1, z2) + ret = _zseries_to_cseries(prd) + return pu.trimseq(ret) + + +def chebdiv(c1, c2): + """ + Divide one Chebyshev series by another. + + Returns the quotient-with-remainder of two Chebyshev series + `c1` / `c2`. The arguments are sequences of coefficients from lowest + order "term" to highest, e.g., [1,2,3] represents the series + ``T_0 + 2*T_1 + 3*T_2``. + + Parameters + ---------- + c1, c2 : array_like + 1-D arrays of Chebyshev series coefficients ordered from low to + high. + + Returns + ------- + [quo, rem] : ndarrays + Of Chebyshev series coefficients representing the quotient and + remainder. + + See Also + -------- + chebadd, chebsub, chebmulx, chebmul, chebpow + + Notes + ----- + In general, the (polynomial) division of one C-series by another + results in quotient and remainder terms that are not in the Chebyshev + polynomial basis set. Thus, to express these results as C-series, it + is typically necessary to "reproject" the results onto said basis + set, which typically produces "unintuitive" (but correct) results; + see Examples section below. + + Examples + -------- + >>> from numpy.polynomial import chebyshev as C + >>> c1 = (1,2,3) + >>> c2 = (3,2,1) + >>> C.chebdiv(c1,c2) # quotient "intuitive," remainder not + (array([3.]), array([-8., -4.])) + >>> c2 = (0,1,2,3) + >>> C.chebdiv(c2,c1) # neither "intuitive" + (array([0., 2.]), array([-2., -4.])) + + """ + # c1, c2 are trimmed copies + [c1, c2] = pu.as_series([c1, c2]) + if c2[-1] == 0: + raise ZeroDivisionError() + + # note: this is more efficient than `pu._div(chebmul, c1, c2)` + lc1 = len(c1) + lc2 = len(c2) + if lc1 < lc2: + return c1[:1]*0, c1 + elif lc2 == 1: + return c1/c2[-1], c1[:1]*0 + else: + z1 = _cseries_to_zseries(c1) + z2 = _cseries_to_zseries(c2) + quo, rem = _zseries_div(z1, z2) + quo = pu.trimseq(_zseries_to_cseries(quo)) + rem = pu.trimseq(_zseries_to_cseries(rem)) + return quo, rem + + +def chebpow(c, pow, maxpower=16): + """Raise a Chebyshev series to a power. + + Returns the Chebyshev series `c` raised to the power `pow`. The + argument `c` is a sequence of coefficients ordered from low to high. + i.e., [1,2,3] is the series ``T_0 + 2*T_1 + 3*T_2.`` + + Parameters + ---------- + c : array_like + 1-D array of Chebyshev series coefficients ordered from low to + high. + pow : integer + Power to which the series will be raised + maxpower : integer, optional + Maximum power allowed. This is mainly to limit growth of the series + to unmanageable size. Default is 16 + + Returns + ------- + coef : ndarray + Chebyshev series of power. + + See Also + -------- + chebadd, chebsub, chebmulx, chebmul, chebdiv + + Examples + -------- + >>> from numpy.polynomial import chebyshev as C + >>> C.chebpow([1, 2, 3, 4], 2) + array([15.5, 22. , 16. , ..., 12.5, 12. , 8. ]) + + """ + # note: this is more efficient than `pu._pow(chebmul, c1, c2)`, as it + # avoids converting between z and c series repeatedly + + # c is a trimmed copy + [c] = pu.as_series([c]) + power = int(pow) + if power != pow or power < 0: + raise ValueError("Power must be a non-negative integer.") + elif maxpower is not None and power > maxpower: + raise ValueError("Power is too large") + elif power == 0: + return np.array([1], dtype=c.dtype) + elif power == 1: + return c + else: + # This can be made more efficient by using powers of two + # in the usual way. + zs = _cseries_to_zseries(c) + prd = zs + for i in range(2, power + 1): + prd = np.convolve(prd, zs) + return _zseries_to_cseries(prd) + + +def chebder(c, m=1, scl=1, axis=0): + """ + Differentiate a Chebyshev series. + + Returns the Chebyshev series coefficients `c` differentiated `m` times + along `axis`. At each iteration the result is multiplied by `scl` (the + scaling factor is for use in a linear change of variable). The argument + `c` is an array of coefficients from low to high degree along each + axis, e.g., [1,2,3] represents the series ``1*T_0 + 2*T_1 + 3*T_2`` + while [[1,2],[1,2]] represents ``1*T_0(x)*T_0(y) + 1*T_1(x)*T_0(y) + + 2*T_0(x)*T_1(y) + 2*T_1(x)*T_1(y)`` if axis=0 is ``x`` and axis=1 is + ``y``. + + Parameters + ---------- + c : array_like + Array of Chebyshev series coefficients. If c is multidimensional + the different axis correspond to different variables with the + degree in each axis given by the corresponding index. + m : int, optional + Number of derivatives taken, must be non-negative. (Default: 1) + scl : scalar, optional + Each differentiation is multiplied by `scl`. The end result is + multiplication by ``scl**m``. This is for use in a linear change of + variable. (Default: 1) + axis : int, optional + Axis over which the derivative is taken. (Default: 0). + + .. versionadded:: 1.7.0 + + Returns + ------- + der : ndarray + Chebyshev series of the derivative. + + See Also + -------- + chebint + + Notes + ----- + In general, the result of differentiating a C-series needs to be + "reprojected" onto the C-series basis set. Thus, typically, the + result of this function is "unintuitive," albeit correct; see Examples + section below. + + Examples + -------- + >>> from numpy.polynomial import chebyshev as C + >>> c = (1,2,3,4) + >>> C.chebder(c) + array([14., 12., 24.]) + >>> C.chebder(c,3) + array([96.]) + >>> C.chebder(c,scl=-1) + array([-14., -12., -24.]) + >>> C.chebder(c,2,-1) + array([12., 96.]) + + """ + c = np.array(c, ndmin=1, copy=True) + if c.dtype.char in '?bBhHiIlLqQpP': + c = c.astype(np.double) + cnt = pu._deprecate_as_int(m, "the order of derivation") + iaxis = pu._deprecate_as_int(axis, "the axis") + if cnt < 0: + raise ValueError("The order of derivation must be non-negative") + iaxis = normalize_axis_index(iaxis, c.ndim) + + if cnt == 0: + return c + + c = np.moveaxis(c, iaxis, 0) + n = len(c) + if cnt >= n: + c = c[:1]*0 + else: + for i in range(cnt): + n = n - 1 + c *= scl + der = np.empty((n,) + c.shape[1:], dtype=c.dtype) + for j in range(n, 2, -1): + der[j - 1] = (2*j)*c[j] + c[j - 2] += (j*c[j])/(j - 2) + if n > 1: + der[1] = 4*c[2] + der[0] = c[1] + c = der + c = np.moveaxis(c, 0, iaxis) + return c + + +def chebint(c, m=1, k=[], lbnd=0, scl=1, axis=0): + """ + Integrate a Chebyshev series. + + Returns the Chebyshev series coefficients `c` integrated `m` times from + `lbnd` along `axis`. At each iteration the resulting series is + **multiplied** by `scl` and an integration constant, `k`, is added. + The scaling factor is for use in a linear change of variable. ("Buyer + beware": note that, depending on what one is doing, one may want `scl` + to be the reciprocal of what one might expect; for more information, + see the Notes section below.) The argument `c` is an array of + coefficients from low to high degree along each axis, e.g., [1,2,3] + represents the series ``T_0 + 2*T_1 + 3*T_2`` while [[1,2],[1,2]] + represents ``1*T_0(x)*T_0(y) + 1*T_1(x)*T_0(y) + 2*T_0(x)*T_1(y) + + 2*T_1(x)*T_1(y)`` if axis=0 is ``x`` and axis=1 is ``y``. + + Parameters + ---------- + c : array_like + Array of Chebyshev series coefficients. If c is multidimensional + the different axis correspond to different variables with the + degree in each axis given by the corresponding index. + m : int, optional + Order of integration, must be positive. (Default: 1) + k : {[], list, scalar}, optional + Integration constant(s). The value of the first integral at zero + is the first value in the list, the value of the second integral + at zero is the second value, etc. If ``k == []`` (the default), + all constants are set to zero. If ``m == 1``, a single scalar can + be given instead of a list. + lbnd : scalar, optional + The lower bound of the integral. (Default: 0) + scl : scalar, optional + Following each integration the result is *multiplied* by `scl` + before the integration constant is added. (Default: 1) + axis : int, optional + Axis over which the integral is taken. (Default: 0). + + .. versionadded:: 1.7.0 + + Returns + ------- + S : ndarray + C-series coefficients of the integral. + + Raises + ------ + ValueError + If ``m < 1``, ``len(k) > m``, ``np.ndim(lbnd) != 0``, or + ``np.ndim(scl) != 0``. + + See Also + -------- + chebder + + Notes + ----- + Note that the result of each integration is *multiplied* by `scl`. + Why is this important to note? Say one is making a linear change of + variable :math:`u = ax + b` in an integral relative to `x`. Then + :math:`dx = du/a`, so one will need to set `scl` equal to + :math:`1/a`- perhaps not what one would have first thought. + + Also note that, in general, the result of integrating a C-series needs + to be "reprojected" onto the C-series basis set. Thus, typically, + the result of this function is "unintuitive," albeit correct; see + Examples section below. + + Examples + -------- + >>> from numpy.polynomial import chebyshev as C + >>> c = (1,2,3) + >>> C.chebint(c) + array([ 0.5, -0.5, 0.5, 0.5]) + >>> C.chebint(c,3) + array([ 0.03125 , -0.1875 , 0.04166667, -0.05208333, 0.01041667, # may vary + 0.00625 ]) + >>> C.chebint(c, k=3) + array([ 3.5, -0.5, 0.5, 0.5]) + >>> C.chebint(c,lbnd=-2) + array([ 8.5, -0.5, 0.5, 0.5]) + >>> C.chebint(c,scl=-2) + array([-1., 1., -1., -1.]) + + """ + c = np.array(c, ndmin=1, copy=True) + if c.dtype.char in '?bBhHiIlLqQpP': + c = c.astype(np.double) + if not np.iterable(k): + k = [k] + cnt = pu._deprecate_as_int(m, "the order of integration") + iaxis = pu._deprecate_as_int(axis, "the axis") + if cnt < 0: + raise ValueError("The order of integration must be non-negative") + if len(k) > cnt: + raise ValueError("Too many integration constants") + if np.ndim(lbnd) != 0: + raise ValueError("lbnd must be a scalar.") + if np.ndim(scl) != 0: + raise ValueError("scl must be a scalar.") + iaxis = normalize_axis_index(iaxis, c.ndim) + + if cnt == 0: + return c + + c = np.moveaxis(c, iaxis, 0) + k = list(k) + [0]*(cnt - len(k)) + for i in range(cnt): + n = len(c) + c *= scl + if n == 1 and np.all(c[0] == 0): + c[0] += k[i] + else: + tmp = np.empty((n + 1,) + c.shape[1:], dtype=c.dtype) + tmp[0] = c[0]*0 + tmp[1] = c[0] + if n > 1: + tmp[2] = c[1]/4 + for j in range(2, n): + tmp[j + 1] = c[j]/(2*(j + 1)) + tmp[j - 1] -= c[j]/(2*(j - 1)) + tmp[0] += k[i] - chebval(lbnd, tmp) + c = tmp + c = np.moveaxis(c, 0, iaxis) + return c + + +def chebval(x, c, tensor=True): + """ + Evaluate a Chebyshev series at points x. + + If `c` is of length `n + 1`, this function returns the value: + + .. math:: p(x) = c_0 * T_0(x) + c_1 * T_1(x) + ... + c_n * T_n(x) + + The parameter `x` is converted to an array only if it is a tuple or a + list, otherwise it is treated as a scalar. In either case, either `x` + or its elements must support multiplication and addition both with + themselves and with the elements of `c`. + + If `c` is a 1-D array, then `p(x)` will have the same shape as `x`. If + `c` is multidimensional, then the shape of the result depends on the + value of `tensor`. If `tensor` is true the shape will be c.shape[1:] + + x.shape. If `tensor` is false the shape will be c.shape[1:]. Note that + scalars have shape (,). + + Trailing zeros in the coefficients will be used in the evaluation, so + they should be avoided if efficiency is a concern. + + Parameters + ---------- + x : array_like, compatible object + If `x` is a list or tuple, it is converted to an ndarray, otherwise + it is left unchanged and treated as a scalar. In either case, `x` + or its elements must support addition and multiplication with + themselves and with the elements of `c`. + c : array_like + Array of coefficients ordered so that the coefficients for terms of + degree n are contained in c[n]. If `c` is multidimensional the + remaining indices enumerate multiple polynomials. In the two + dimensional case the coefficients may be thought of as stored in + the columns of `c`. + tensor : boolean, optional + If True, the shape of the coefficient array is extended with ones + on the right, one for each dimension of `x`. Scalars have dimension 0 + for this action. The result is that every column of coefficients in + `c` is evaluated for every element of `x`. If False, `x` is broadcast + over the columns of `c` for the evaluation. This keyword is useful + when `c` is multidimensional. The default value is True. + + .. versionadded:: 1.7.0 + + Returns + ------- + values : ndarray, algebra_like + The shape of the return value is described above. + + See Also + -------- + chebval2d, chebgrid2d, chebval3d, chebgrid3d + + Notes + ----- + The evaluation uses Clenshaw recursion, aka synthetic division. + + """ + c = np.array(c, ndmin=1, copy=True) + if c.dtype.char in '?bBhHiIlLqQpP': + c = c.astype(np.double) + if isinstance(x, (tuple, list)): + x = np.asarray(x) + if isinstance(x, np.ndarray) and tensor: + c = c.reshape(c.shape + (1,)*x.ndim) + + if len(c) == 1: + c0 = c[0] + c1 = 0 + elif len(c) == 2: + c0 = c[0] + c1 = c[1] + else: + x2 = 2*x + c0 = c[-2] + c1 = c[-1] + for i in range(3, len(c) + 1): + tmp = c0 + c0 = c[-i] - c1 + c1 = tmp + c1*x2 + return c0 + c1*x + + +def chebval2d(x, y, c): + """ + Evaluate a 2-D Chebyshev series at points (x, y). + + This function returns the values: + + .. math:: p(x,y) = \\sum_{i,j} c_{i,j} * T_i(x) * T_j(y) + + The parameters `x` and `y` are converted to arrays only if they are + tuples or a lists, otherwise they are treated as a scalars and they + must have the same shape after conversion. In either case, either `x` + and `y` or their elements must support multiplication and addition both + with themselves and with the elements of `c`. + + If `c` is a 1-D array a one is implicitly appended to its shape to make + it 2-D. The shape of the result will be c.shape[2:] + x.shape. + + Parameters + ---------- + x, y : array_like, compatible objects + The two dimensional series is evaluated at the points `(x, y)`, + where `x` and `y` must have the same shape. If `x` or `y` is a list + or tuple, it is first converted to an ndarray, otherwise it is left + unchanged and if it isn't an ndarray it is treated as a scalar. + c : array_like + Array of coefficients ordered so that the coefficient of the term + of multi-degree i,j is contained in ``c[i,j]``. If `c` has + dimension greater than 2 the remaining indices enumerate multiple + sets of coefficients. + + Returns + ------- + values : ndarray, compatible object + The values of the two dimensional Chebyshev series at points formed + from pairs of corresponding values from `x` and `y`. + + See Also + -------- + chebval, chebgrid2d, chebval3d, chebgrid3d + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + return pu._valnd(chebval, c, x, y) + + +def chebgrid2d(x, y, c): + """ + Evaluate a 2-D Chebyshev series on the Cartesian product of x and y. + + This function returns the values: + + .. math:: p(a,b) = \\sum_{i,j} c_{i,j} * T_i(a) * T_j(b), + + where the points `(a, b)` consist of all pairs formed by taking + `a` from `x` and `b` from `y`. The resulting points form a grid with + `x` in the first dimension and `y` in the second. + + The parameters `x` and `y` are converted to arrays only if they are + tuples or a lists, otherwise they are treated as a scalars. In either + case, either `x` and `y` or their elements must support multiplication + and addition both with themselves and with the elements of `c`. + + If `c` has fewer than two dimensions, ones are implicitly appended to + its shape to make it 2-D. The shape of the result will be c.shape[2:] + + x.shape + y.shape. + + Parameters + ---------- + x, y : array_like, compatible objects + The two dimensional series is evaluated at the points in the + Cartesian product of `x` and `y`. If `x` or `y` is a list or + tuple, it is first converted to an ndarray, otherwise it is left + unchanged and, if it isn't an ndarray, it is treated as a scalar. + c : array_like + Array of coefficients ordered so that the coefficient of the term of + multi-degree i,j is contained in `c[i,j]`. If `c` has dimension + greater than two the remaining indices enumerate multiple sets of + coefficients. + + Returns + ------- + values : ndarray, compatible object + The values of the two dimensional Chebyshev series at points in the + Cartesian product of `x` and `y`. + + See Also + -------- + chebval, chebval2d, chebval3d, chebgrid3d + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + return pu._gridnd(chebval, c, x, y) + + +def chebval3d(x, y, z, c): + """ + Evaluate a 3-D Chebyshev series at points (x, y, z). + + This function returns the values: + + .. math:: p(x,y,z) = \\sum_{i,j,k} c_{i,j,k} * T_i(x) * T_j(y) * T_k(z) + + The parameters `x`, `y`, and `z` are converted to arrays only if + they are tuples or a lists, otherwise they are treated as a scalars and + they must have the same shape after conversion. In either case, either + `x`, `y`, and `z` or their elements must support multiplication and + addition both with themselves and with the elements of `c`. + + If `c` has fewer than 3 dimensions, ones are implicitly appended to its + shape to make it 3-D. The shape of the result will be c.shape[3:] + + x.shape. + + Parameters + ---------- + x, y, z : array_like, compatible object + The three dimensional series is evaluated at the points + `(x, y, z)`, where `x`, `y`, and `z` must have the same shape. If + any of `x`, `y`, or `z` is a list or tuple, it is first converted + to an ndarray, otherwise it is left unchanged and if it isn't an + ndarray it is treated as a scalar. + c : array_like + Array of coefficients ordered so that the coefficient of the term of + multi-degree i,j,k is contained in ``c[i,j,k]``. If `c` has dimension + greater than 3 the remaining indices enumerate multiple sets of + coefficients. + + Returns + ------- + values : ndarray, compatible object + The values of the multidimensional polynomial on points formed with + triples of corresponding values from `x`, `y`, and `z`. + + See Also + -------- + chebval, chebval2d, chebgrid2d, chebgrid3d + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + return pu._valnd(chebval, c, x, y, z) + + +def chebgrid3d(x, y, z, c): + """ + Evaluate a 3-D Chebyshev series on the Cartesian product of x, y, and z. + + This function returns the values: + + .. math:: p(a,b,c) = \\sum_{i,j,k} c_{i,j,k} * T_i(a) * T_j(b) * T_k(c) + + where the points `(a, b, c)` consist of all triples formed by taking + `a` from `x`, `b` from `y`, and `c` from `z`. The resulting points form + a grid with `x` in the first dimension, `y` in the second, and `z` in + the third. + + The parameters `x`, `y`, and `z` are converted to arrays only if they + are tuples or a lists, otherwise they are treated as a scalars. In + either case, either `x`, `y`, and `z` or their elements must support + multiplication and addition both with themselves and with the elements + of `c`. + + If `c` has fewer than three dimensions, ones are implicitly appended to + its shape to make it 3-D. The shape of the result will be c.shape[3:] + + x.shape + y.shape + z.shape. + + Parameters + ---------- + x, y, z : array_like, compatible objects + The three dimensional series is evaluated at the points in the + Cartesian product of `x`, `y`, and `z`. If `x`,`y`, or `z` is a + list or tuple, it is first converted to an ndarray, otherwise it is + left unchanged and, if it isn't an ndarray, it is treated as a + scalar. + c : array_like + Array of coefficients ordered so that the coefficients for terms of + degree i,j are contained in ``c[i,j]``. If `c` has dimension + greater than two the remaining indices enumerate multiple sets of + coefficients. + + Returns + ------- + values : ndarray, compatible object + The values of the two dimensional polynomial at points in the Cartesian + product of `x` and `y`. + + See Also + -------- + chebval, chebval2d, chebgrid2d, chebval3d + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + return pu._gridnd(chebval, c, x, y, z) + + +def chebvander(x, deg): + """Pseudo-Vandermonde matrix of given degree. + + Returns the pseudo-Vandermonde matrix of degree `deg` and sample points + `x`. The pseudo-Vandermonde matrix is defined by + + .. math:: V[..., i] = T_i(x), + + where `0 <= i <= deg`. The leading indices of `V` index the elements of + `x` and the last index is the degree of the Chebyshev polynomial. + + If `c` is a 1-D array of coefficients of length `n + 1` and `V` is the + matrix ``V = chebvander(x, n)``, then ``np.dot(V, c)`` and + ``chebval(x, c)`` are the same up to roundoff. This equivalence is + useful both for least squares fitting and for the evaluation of a large + number of Chebyshev series of the same degree and sample points. + + Parameters + ---------- + x : array_like + Array of points. The dtype is converted to float64 or complex128 + depending on whether any of the elements are complex. If `x` is + scalar it is converted to a 1-D array. + deg : int + Degree of the resulting matrix. + + Returns + ------- + vander : ndarray + The pseudo Vandermonde matrix. The shape of the returned matrix is + ``x.shape + (deg + 1,)``, where The last index is the degree of the + corresponding Chebyshev polynomial. The dtype will be the same as + the converted `x`. + + """ + ideg = pu._deprecate_as_int(deg, "deg") + if ideg < 0: + raise ValueError("deg must be non-negative") + + x = np.array(x, copy=False, ndmin=1) + 0.0 + dims = (ideg + 1,) + x.shape + dtyp = x.dtype + v = np.empty(dims, dtype=dtyp) + # Use forward recursion to generate the entries. + v[0] = x*0 + 1 + if ideg > 0: + x2 = 2*x + v[1] = x + for i in range(2, ideg + 1): + v[i] = v[i-1]*x2 - v[i-2] + return np.moveaxis(v, 0, -1) + + +def chebvander2d(x, y, deg): + """Pseudo-Vandermonde matrix of given degrees. + + Returns the pseudo-Vandermonde matrix of degrees `deg` and sample + points `(x, y)`. The pseudo-Vandermonde matrix is defined by + + .. math:: V[..., (deg[1] + 1)*i + j] = T_i(x) * T_j(y), + + where `0 <= i <= deg[0]` and `0 <= j <= deg[1]`. The leading indices of + `V` index the points `(x, y)` and the last index encodes the degrees of + the Chebyshev polynomials. + + If ``V = chebvander2d(x, y, [xdeg, ydeg])``, then the columns of `V` + correspond to the elements of a 2-D coefficient array `c` of shape + (xdeg + 1, ydeg + 1) in the order + + .. math:: c_{00}, c_{01}, c_{02} ... , c_{10}, c_{11}, c_{12} ... + + and ``np.dot(V, c.flat)`` and ``chebval2d(x, y, c)`` will be the same + up to roundoff. This equivalence is useful both for least squares + fitting and for the evaluation of a large number of 2-D Chebyshev + series of the same degrees and sample points. + + Parameters + ---------- + x, y : array_like + Arrays of point coordinates, all of the same shape. The dtypes + will be converted to either float64 or complex128 depending on + whether any of the elements are complex. Scalars are converted to + 1-D arrays. + deg : list of ints + List of maximum degrees of the form [x_deg, y_deg]. + + Returns + ------- + vander2d : ndarray + The shape of the returned matrix is ``x.shape + (order,)``, where + :math:`order = (deg[0]+1)*(deg[1]+1)`. The dtype will be the same + as the converted `x` and `y`. + + See Also + -------- + chebvander, chebvander3d, chebval2d, chebval3d + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + return pu._vander_nd_flat((chebvander, chebvander), (x, y), deg) + + +def chebvander3d(x, y, z, deg): + """Pseudo-Vandermonde matrix of given degrees. + + Returns the pseudo-Vandermonde matrix of degrees `deg` and sample + points `(x, y, z)`. If `l, m, n` are the given degrees in `x, y, z`, + then The pseudo-Vandermonde matrix is defined by + + .. math:: V[..., (m+1)(n+1)i + (n+1)j + k] = T_i(x)*T_j(y)*T_k(z), + + where `0 <= i <= l`, `0 <= j <= m`, and `0 <= j <= n`. The leading + indices of `V` index the points `(x, y, z)` and the last index encodes + the degrees of the Chebyshev polynomials. + + If ``V = chebvander3d(x, y, z, [xdeg, ydeg, zdeg])``, then the columns + of `V` correspond to the elements of a 3-D coefficient array `c` of + shape (xdeg + 1, ydeg + 1, zdeg + 1) in the order + + .. math:: c_{000}, c_{001}, c_{002},... , c_{010}, c_{011}, c_{012},... + + and ``np.dot(V, c.flat)`` and ``chebval3d(x, y, z, c)`` will be the + same up to roundoff. This equivalence is useful both for least squares + fitting and for the evaluation of a large number of 3-D Chebyshev + series of the same degrees and sample points. + + Parameters + ---------- + x, y, z : array_like + Arrays of point coordinates, all of the same shape. The dtypes will + be converted to either float64 or complex128 depending on whether + any of the elements are complex. Scalars are converted to 1-D + arrays. + deg : list of ints + List of maximum degrees of the form [x_deg, y_deg, z_deg]. + + Returns + ------- + vander3d : ndarray + The shape of the returned matrix is ``x.shape + (order,)``, where + :math:`order = (deg[0]+1)*(deg[1]+1)*(deg[2]+1)`. The dtype will + be the same as the converted `x`, `y`, and `z`. + + See Also + -------- + chebvander, chebvander3d, chebval2d, chebval3d + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + return pu._vander_nd_flat((chebvander, chebvander, chebvander), (x, y, z), deg) + + +def chebfit(x, y, deg, rcond=None, full=False, w=None): + """ + Least squares fit of Chebyshev series to data. + + Return the coefficients of a Chebyshev series of degree `deg` that is the + least squares fit to the data values `y` given at points `x`. If `y` is + 1-D the returned coefficients will also be 1-D. If `y` is 2-D multiple + fits are done, one for each column of `y`, and the resulting + coefficients are stored in the corresponding columns of a 2-D return. + The fitted polynomial(s) are in the form + + .. math:: p(x) = c_0 + c_1 * T_1(x) + ... + c_n * T_n(x), + + where `n` is `deg`. + + Parameters + ---------- + x : array_like, shape (M,) + x-coordinates of the M sample points ``(x[i], y[i])``. + y : array_like, shape (M,) or (M, K) + y-coordinates of the sample points. Several data sets of sample + points sharing the same x-coordinates can be fitted at once by + passing in a 2D-array that contains one dataset per column. + deg : int or 1-D array_like + Degree(s) of the fitting polynomials. If `deg` is a single integer, + all terms up to and including the `deg`'th term are included in the + fit. For NumPy versions >= 1.11.0 a list of integers specifying the + degrees of the terms to include may be used instead. + rcond : float, optional + Relative condition number of the fit. Singular values smaller than + this relative to the largest singular value will be ignored. The + default value is len(x)*eps, where eps is the relative precision of + the float type, about 2e-16 in most cases. + full : bool, optional + Switch determining nature of return value. When it is False (the + default) just the coefficients are returned, when True diagnostic + information from the singular value decomposition is also returned. + w : array_like, shape (`M`,), optional + Weights. If not None, the weight ``w[i]`` applies to the unsquared + residual ``y[i] - y_hat[i]`` at ``x[i]``. Ideally the weights are + chosen so that the errors of the products ``w[i]*y[i]`` all have the + same variance. When using inverse-variance weighting, use + ``w[i] = 1/sigma(y[i])``. The default value is None. + + .. versionadded:: 1.5.0 + + Returns + ------- + coef : ndarray, shape (M,) or (M, K) + Chebyshev coefficients ordered from low to high. If `y` was 2-D, + the coefficients for the data in column k of `y` are in column + `k`. + + [residuals, rank, singular_values, rcond] : list + These values are only returned if ``full == True`` + + - residuals -- sum of squared residuals of the least squares fit + - rank -- the numerical rank of the scaled Vandermonde matrix + - singular_values -- singular values of the scaled Vandermonde matrix + - rcond -- value of `rcond`. + + For more details, see `numpy.linalg.lstsq`. + + Warns + ----- + RankWarning + The rank of the coefficient matrix in the least-squares fit is + deficient. The warning is only raised if ``full == False``. The + warnings can be turned off by + + >>> import warnings + >>> warnings.simplefilter('ignore', np.RankWarning) + + See Also + -------- + numpy.polynomial.polynomial.polyfit + numpy.polynomial.legendre.legfit + numpy.polynomial.laguerre.lagfit + numpy.polynomial.hermite.hermfit + numpy.polynomial.hermite_e.hermefit + chebval : Evaluates a Chebyshev series. + chebvander : Vandermonde matrix of Chebyshev series. + chebweight : Chebyshev weight function. + numpy.linalg.lstsq : Computes a least-squares fit from the matrix. + scipy.interpolate.UnivariateSpline : Computes spline fits. + + Notes + ----- + The solution is the coefficients of the Chebyshev series `p` that + minimizes the sum of the weighted squared errors + + .. math:: E = \\sum_j w_j^2 * |y_j - p(x_j)|^2, + + where :math:`w_j` are the weights. This problem is solved by setting up + as the (typically) overdetermined matrix equation + + .. math:: V(x) * c = w * y, + + where `V` is the weighted pseudo Vandermonde matrix of `x`, `c` are the + coefficients to be solved for, `w` are the weights, and `y` are the + observed values. This equation is then solved using the singular value + decomposition of `V`. + + If some of the singular values of `V` are so small that they are + neglected, then a `RankWarning` will be issued. This means that the + coefficient values may be poorly determined. Using a lower order fit + will usually get rid of the warning. The `rcond` parameter can also be + set to a value smaller than its default, but the resulting fit may be + spurious and have large contributions from roundoff error. + + Fits using Chebyshev series are usually better conditioned than fits + using power series, but much can depend on the distribution of the + sample points and the smoothness of the data. If the quality of the fit + is inadequate splines may be a good alternative. + + References + ---------- + .. [1] Wikipedia, "Curve fitting", + https://en.wikipedia.org/wiki/Curve_fitting + + Examples + -------- + + """ + return pu._fit(chebvander, x, y, deg, rcond, full, w) + + +def chebcompanion(c): + """Return the scaled companion matrix of c. + + The basis polynomials are scaled so that the companion matrix is + symmetric when `c` is a Chebyshev basis polynomial. This provides + better eigenvalue estimates than the unscaled case and for basis + polynomials the eigenvalues are guaranteed to be real if + `numpy.linalg.eigvalsh` is used to obtain them. + + Parameters + ---------- + c : array_like + 1-D array of Chebyshev series coefficients ordered from low to high + degree. + + Returns + ------- + mat : ndarray + Scaled companion matrix of dimensions (deg, deg). + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + # c is a trimmed copy + [c] = pu.as_series([c]) + if len(c) < 2: + raise ValueError('Series must have maximum degree of at least 1.') + if len(c) == 2: + return np.array([[-c[0]/c[1]]]) + + n = len(c) - 1 + mat = np.zeros((n, n), dtype=c.dtype) + scl = np.array([1.] + [np.sqrt(.5)]*(n-1)) + top = mat.reshape(-1)[1::n+1] + bot = mat.reshape(-1)[n::n+1] + top[0] = np.sqrt(.5) + top[1:] = 1/2 + bot[...] = top + mat[:, -1] -= (c[:-1]/c[-1])*(scl/scl[-1])*.5 + return mat + + +def chebroots(c): + """ + Compute the roots of a Chebyshev series. + + Return the roots (a.k.a. "zeros") of the polynomial + + .. math:: p(x) = \\sum_i c[i] * T_i(x). + + Parameters + ---------- + c : 1-D array_like + 1-D array of coefficients. + + Returns + ------- + out : ndarray + Array of the roots of the series. If all the roots are real, + then `out` is also real, otherwise it is complex. + + See Also + -------- + numpy.polynomial.polynomial.polyroots + numpy.polynomial.legendre.legroots + numpy.polynomial.laguerre.lagroots + numpy.polynomial.hermite.hermroots + numpy.polynomial.hermite_e.hermeroots + + Notes + ----- + The root estimates are obtained as the eigenvalues of the companion + matrix, Roots far from the origin of the complex plane may have large + errors due to the numerical instability of the series for such + values. Roots with multiplicity greater than 1 will also show larger + errors as the value of the series near such points is relatively + insensitive to errors in the roots. Isolated roots near the origin can + be improved by a few iterations of Newton's method. + + The Chebyshev series basis polynomials aren't powers of `x` so the + results of this function may seem unintuitive. + + Examples + -------- + >>> import numpy.polynomial.chebyshev as cheb + >>> cheb.chebroots((-1, 1,-1, 1)) # T3 - T2 + T1 - T0 has real roots + array([ -5.00000000e-01, 2.60860684e-17, 1.00000000e+00]) # may vary + + """ + # c is a trimmed copy + [c] = pu.as_series([c]) + if len(c) < 2: + return np.array([], dtype=c.dtype) + if len(c) == 2: + return np.array([-c[0]/c[1]]) + + # rotated companion matrix reduces error + m = chebcompanion(c)[::-1,::-1] + r = la.eigvals(m) + r.sort() + return r + + +def chebinterpolate(func, deg, args=()): + """Interpolate a function at the Chebyshev points of the first kind. + + Returns the Chebyshev series that interpolates `func` at the Chebyshev + points of the first kind in the interval [-1, 1]. The interpolating + series tends to a minmax approximation to `func` with increasing `deg` + if the function is continuous in the interval. + + .. versionadded:: 1.14.0 + + Parameters + ---------- + func : function + The function to be approximated. It must be a function of a single + variable of the form ``f(x, a, b, c...)``, where ``a, b, c...`` are + extra arguments passed in the `args` parameter. + deg : int + Degree of the interpolating polynomial + args : tuple, optional + Extra arguments to be used in the function call. Default is no extra + arguments. + + Returns + ------- + coef : ndarray, shape (deg + 1,) + Chebyshev coefficients of the interpolating series ordered from low to + high. + + Examples + -------- + >>> import numpy.polynomial.chebyshev as C + >>> C.chebfromfunction(lambda x: np.tanh(x) + 0.5, 8) + array([ 5.00000000e-01, 8.11675684e-01, -9.86864911e-17, + -5.42457905e-02, -2.71387850e-16, 4.51658839e-03, + 2.46716228e-17, -3.79694221e-04, -3.26899002e-16]) + + Notes + ----- + + The Chebyshev polynomials used in the interpolation are orthogonal when + sampled at the Chebyshev points of the first kind. If it is desired to + constrain some of the coefficients they can simply be set to the desired + value after the interpolation, no new interpolation or fit is needed. This + is especially useful if it is known apriori that some of coefficients are + zero. For instance, if the function is even then the coefficients of the + terms of odd degree in the result can be set to zero. + + """ + deg = np.asarray(deg) + + # check arguments. + if deg.ndim > 0 or deg.dtype.kind not in 'iu' or deg.size == 0: + raise TypeError("deg must be an int") + if deg < 0: + raise ValueError("expected deg >= 0") + + order = deg + 1 + xcheb = chebpts1(order) + yfunc = func(xcheb, *args) + m = chebvander(xcheb, deg) + c = np.dot(m.T, yfunc) + c[0] /= order + c[1:] /= 0.5*order + + return c + + +def chebgauss(deg): + """ + Gauss-Chebyshev quadrature. + + Computes the sample points and weights for Gauss-Chebyshev quadrature. + These sample points and weights will correctly integrate polynomials of + degree :math:`2*deg - 1` or less over the interval :math:`[-1, 1]` with + the weight function :math:`f(x) = 1/\\sqrt{1 - x^2}`. + + Parameters + ---------- + deg : int + Number of sample points and weights. It must be >= 1. + + Returns + ------- + x : ndarray + 1-D ndarray containing the sample points. + y : ndarray + 1-D ndarray containing the weights. + + Notes + ----- + + .. versionadded:: 1.7.0 + + The results have only been tested up to degree 100, higher degrees may + be problematic. For Gauss-Chebyshev there are closed form solutions for + the sample points and weights. If n = `deg`, then + + .. math:: x_i = \\cos(\\pi (2 i - 1) / (2 n)) + + .. math:: w_i = \\pi / n + + """ + ideg = pu._deprecate_as_int(deg, "deg") + if ideg <= 0: + raise ValueError("deg must be a positive integer") + + x = np.cos(np.pi * np.arange(1, 2*ideg, 2) / (2.0*ideg)) + w = np.ones(ideg)*(np.pi/ideg) + + return x, w + + +def chebweight(x): + """ + The weight function of the Chebyshev polynomials. + + The weight function is :math:`1/\\sqrt{1 - x^2}` and the interval of + integration is :math:`[-1, 1]`. The Chebyshev polynomials are + orthogonal, but not normalized, with respect to this weight function. + + Parameters + ---------- + x : array_like + Values at which the weight function will be computed. + + Returns + ------- + w : ndarray + The weight function at `x`. + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + w = 1./(np.sqrt(1. + x) * np.sqrt(1. - x)) + return w + + +def chebpts1(npts): + """ + Chebyshev points of the first kind. + + The Chebyshev points of the first kind are the points ``cos(x)``, + where ``x = [pi*(k + .5)/npts for k in range(npts)]``. + + Parameters + ---------- + npts : int + Number of sample points desired. + + Returns + ------- + pts : ndarray + The Chebyshev points of the first kind. + + See Also + -------- + chebpts2 + + Notes + ----- + + .. versionadded:: 1.5.0 + + """ + _npts = int(npts) + if _npts != npts: + raise ValueError("npts must be integer") + if _npts < 1: + raise ValueError("npts must be >= 1") + + x = 0.5 * np.pi / _npts * np.arange(-_npts+1, _npts+1, 2) + return np.sin(x) + + +def chebpts2(npts): + """ + Chebyshev points of the second kind. + + The Chebyshev points of the second kind are the points ``cos(x)``, + where ``x = [pi*k/(npts - 1) for k in range(npts)]`` sorted in ascending + order. + + Parameters + ---------- + npts : int + Number of sample points desired. + + Returns + ------- + pts : ndarray + The Chebyshev points of the second kind. + + Notes + ----- + + .. versionadded:: 1.5.0 + + """ + _npts = int(npts) + if _npts != npts: + raise ValueError("npts must be integer") + if _npts < 2: + raise ValueError("npts must be >= 2") + + x = np.linspace(-np.pi, 0, _npts) + return np.cos(x) + + +# +# Chebyshev series class +# + +class Chebyshev(ABCPolyBase): + """A Chebyshev series class. + + The Chebyshev class provides the standard Python numerical methods + '+', '-', '*', '//', '%', 'divmod', '**', and '()' as well as the + methods listed below. + + Parameters + ---------- + coef : array_like + Chebyshev coefficients in order of increasing degree, i.e., + ``(1, 2, 3)`` gives ``1*T_0(x) + 2*T_1(x) + 3*T_2(x)``. + domain : (2,) array_like, optional + Domain to use. The interval ``[domain[0], domain[1]]`` is mapped + to the interval ``[window[0], window[1]]`` by shifting and scaling. + The default value is [-1, 1]. + window : (2,) array_like, optional + Window, see `domain` for its use. The default value is [-1, 1]. + + .. versionadded:: 1.6.0 + symbol : str, optional + Symbol used to represent the independent variable in string + representations of the polynomial expression, e.g. for printing. + The symbol must be a valid Python identifier. Default value is 'x'. + + .. versionadded:: 1.24 + + """ + # Virtual Functions + _add = staticmethod(chebadd) + _sub = staticmethod(chebsub) + _mul = staticmethod(chebmul) + _div = staticmethod(chebdiv) + _pow = staticmethod(chebpow) + _val = staticmethod(chebval) + _int = staticmethod(chebint) + _der = staticmethod(chebder) + _fit = staticmethod(chebfit) + _line = staticmethod(chebline) + _roots = staticmethod(chebroots) + _fromroots = staticmethod(chebfromroots) + + @classmethod + def interpolate(cls, func, deg, domain=None, args=()): + """Interpolate a function at the Chebyshev points of the first kind. + + Returns the series that interpolates `func` at the Chebyshev points of + the first kind scaled and shifted to the `domain`. The resulting series + tends to a minmax approximation of `func` when the function is + continuous in the domain. + + .. versionadded:: 1.14.0 + + Parameters + ---------- + func : function + The function to be interpolated. It must be a function of a single + variable of the form ``f(x, a, b, c...)``, where ``a, b, c...`` are + extra arguments passed in the `args` parameter. + deg : int + Degree of the interpolating polynomial. + domain : {None, [beg, end]}, optional + Domain over which `func` is interpolated. The default is None, in + which case the domain is [-1, 1]. + args : tuple, optional + Extra arguments to be used in the function call. Default is no + extra arguments. + + Returns + ------- + polynomial : Chebyshev instance + Interpolating Chebyshev instance. + + Notes + ----- + See `numpy.polynomial.chebfromfunction` for more details. + + """ + if domain is None: + domain = cls.domain + xfunc = lambda x: func(pu.mapdomain(x, cls.window, domain), *args) + coef = chebinterpolate(xfunc, deg) + return cls(coef, domain=domain) + + # Virtual properties + domain = np.array(chebdomain) + window = np.array(chebdomain) + basis_name = 'T' diff --git a/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/chebyshev.pyi b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/chebyshev.pyi new file mode 100644 index 0000000000000000000000000000000000000000..e8113dbae780263de1bd99ae841df16a4646d761 --- /dev/null +++ b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/chebyshev.pyi @@ -0,0 +1,51 @@ +from typing import Any + +from numpy import ndarray, dtype, int_ +from numpy.polynomial._polybase import ABCPolyBase +from numpy.polynomial.polyutils import trimcoef + +__all__: list[str] + +chebtrim = trimcoef + +def poly2cheb(pol): ... +def cheb2poly(c): ... + +chebdomain: ndarray[Any, dtype[int_]] +chebzero: ndarray[Any, dtype[int_]] +chebone: ndarray[Any, dtype[int_]] +chebx: ndarray[Any, dtype[int_]] + +def chebline(off, scl): ... +def chebfromroots(roots): ... +def chebadd(c1, c2): ... +def chebsub(c1, c2): ... +def chebmulx(c): ... +def chebmul(c1, c2): ... +def chebdiv(c1, c2): ... +def chebpow(c, pow, maxpower=...): ... +def chebder(c, m=..., scl=..., axis=...): ... +def chebint(c, m=..., k = ..., lbnd=..., scl=..., axis=...): ... +def chebval(x, c, tensor=...): ... +def chebval2d(x, y, c): ... +def chebgrid2d(x, y, c): ... +def chebval3d(x, y, z, c): ... +def chebgrid3d(x, y, z, c): ... +def chebvander(x, deg): ... +def chebvander2d(x, y, deg): ... +def chebvander3d(x, y, z, deg): ... +def chebfit(x, y, deg, rcond=..., full=..., w=...): ... +def chebcompanion(c): ... +def chebroots(c): ... +def chebinterpolate(func, deg, args = ...): ... +def chebgauss(deg): ... +def chebweight(x): ... +def chebpts1(npts): ... +def chebpts2(npts): ... + +class Chebyshev(ABCPolyBase): + @classmethod + def interpolate(cls, func, deg, domain=..., args = ...): ... + domain: Any + window: Any + basis_name: Any diff --git a/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/hermite.py b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/hermite.py new file mode 100644 index 0000000000000000000000000000000000000000..210df25f5ca3ace7aaa8c7614936e305097a6195 --- /dev/null +++ b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/hermite.py @@ -0,0 +1,1703 @@ +""" +============================================================== +Hermite Series, "Physicists" (:mod:`numpy.polynomial.hermite`) +============================================================== + +This module provides a number of objects (mostly functions) useful for +dealing with Hermite series, including a `Hermite` class that +encapsulates the usual arithmetic operations. (General information +on how this module represents and works with such polynomials is in the +docstring for its "parent" sub-package, `numpy.polynomial`). + +Classes +------- +.. autosummary:: + :toctree: generated/ + + Hermite + +Constants +--------- +.. autosummary:: + :toctree: generated/ + + hermdomain + hermzero + hermone + hermx + +Arithmetic +---------- +.. autosummary:: + :toctree: generated/ + + hermadd + hermsub + hermmulx + hermmul + hermdiv + hermpow + hermval + hermval2d + hermval3d + hermgrid2d + hermgrid3d + +Calculus +-------- +.. autosummary:: + :toctree: generated/ + + hermder + hermint + +Misc Functions +-------------- +.. autosummary:: + :toctree: generated/ + + hermfromroots + hermroots + hermvander + hermvander2d + hermvander3d + hermgauss + hermweight + hermcompanion + hermfit + hermtrim + hermline + herm2poly + poly2herm + +See also +-------- +`numpy.polynomial` + +""" +import numpy as np +import numpy.linalg as la +from numpy.core.multiarray import normalize_axis_index + +from . import polyutils as pu +from ._polybase import ABCPolyBase + +__all__ = [ + 'hermzero', 'hermone', 'hermx', 'hermdomain', 'hermline', 'hermadd', + 'hermsub', 'hermmulx', 'hermmul', 'hermdiv', 'hermpow', 'hermval', + 'hermder', 'hermint', 'herm2poly', 'poly2herm', 'hermfromroots', + 'hermvander', 'hermfit', 'hermtrim', 'hermroots', 'Hermite', + 'hermval2d', 'hermval3d', 'hermgrid2d', 'hermgrid3d', 'hermvander2d', + 'hermvander3d', 'hermcompanion', 'hermgauss', 'hermweight'] + +hermtrim = pu.trimcoef + + +def poly2herm(pol): + """ + poly2herm(pol) + + Convert a polynomial to a Hermite series. + + Convert an array representing the coefficients of a polynomial (relative + to the "standard" basis) ordered from lowest degree to highest, to an + array of the coefficients of the equivalent Hermite series, ordered + from lowest to highest degree. + + Parameters + ---------- + pol : array_like + 1-D array containing the polynomial coefficients + + Returns + ------- + c : ndarray + 1-D array containing the coefficients of the equivalent Hermite + series. + + See Also + -------- + herm2poly + + Notes + ----- + The easy way to do conversions between polynomial basis sets + is to use the convert method of a class instance. + + Examples + -------- + >>> from numpy.polynomial.hermite import poly2herm + >>> poly2herm(np.arange(4)) + array([1. , 2.75 , 0.5 , 0.375]) + + """ + [pol] = pu.as_series([pol]) + deg = len(pol) - 1 + res = 0 + for i in range(deg, -1, -1): + res = hermadd(hermmulx(res), pol[i]) + return res + + +def herm2poly(c): + """ + Convert a Hermite series to a polynomial. + + Convert an array representing the coefficients of a Hermite series, + ordered from lowest degree to highest, to an array of the coefficients + of the equivalent polynomial (relative to the "standard" basis) ordered + from lowest to highest degree. + + Parameters + ---------- + c : array_like + 1-D array containing the Hermite series coefficients, ordered + from lowest order term to highest. + + Returns + ------- + pol : ndarray + 1-D array containing the coefficients of the equivalent polynomial + (relative to the "standard" basis) ordered from lowest order term + to highest. + + See Also + -------- + poly2herm + + Notes + ----- + The easy way to do conversions between polynomial basis sets + is to use the convert method of a class instance. + + Examples + -------- + >>> from numpy.polynomial.hermite import herm2poly + >>> herm2poly([ 1. , 2.75 , 0.5 , 0.375]) + array([0., 1., 2., 3.]) + + """ + from .polynomial import polyadd, polysub, polymulx + + [c] = pu.as_series([c]) + n = len(c) + if n == 1: + return c + if n == 2: + c[1] *= 2 + return c + else: + c0 = c[-2] + c1 = c[-1] + # i is the current degree of c1 + for i in range(n - 1, 1, -1): + tmp = c0 + c0 = polysub(c[i - 2], c1*(2*(i - 1))) + c1 = polyadd(tmp, polymulx(c1)*2) + return polyadd(c0, polymulx(c1)*2) + +# +# These are constant arrays are of integer type so as to be compatible +# with the widest range of other types, such as Decimal. +# + +# Hermite +hermdomain = np.array([-1, 1]) + +# Hermite coefficients representing zero. +hermzero = np.array([0]) + +# Hermite coefficients representing one. +hermone = np.array([1]) + +# Hermite coefficients representing the identity x. +hermx = np.array([0, 1/2]) + + +def hermline(off, scl): + """ + Hermite series whose graph is a straight line. + + + + Parameters + ---------- + off, scl : scalars + The specified line is given by ``off + scl*x``. + + Returns + ------- + y : ndarray + This module's representation of the Hermite series for + ``off + scl*x``. + + See Also + -------- + numpy.polynomial.polynomial.polyline + numpy.polynomial.chebyshev.chebline + numpy.polynomial.legendre.legline + numpy.polynomial.laguerre.lagline + numpy.polynomial.hermite_e.hermeline + + Examples + -------- + >>> from numpy.polynomial.hermite import hermline, hermval + >>> hermval(0,hermline(3, 2)) + 3.0 + >>> hermval(1,hermline(3, 2)) + 5.0 + + """ + if scl != 0: + return np.array([off, scl/2]) + else: + return np.array([off]) + + +def hermfromroots(roots): + """ + Generate a Hermite series with given roots. + + The function returns the coefficients of the polynomial + + .. math:: p(x) = (x - r_0) * (x - r_1) * ... * (x - r_n), + + in Hermite form, where the `r_n` are the roots specified in `roots`. + If a zero has multiplicity n, then it must appear in `roots` n times. + For instance, if 2 is a root of multiplicity three and 3 is a root of + multiplicity 2, then `roots` looks something like [2, 2, 2, 3, 3]. The + roots can appear in any order. + + If the returned coefficients are `c`, then + + .. math:: p(x) = c_0 + c_1 * H_1(x) + ... + c_n * H_n(x) + + The coefficient of the last term is not generally 1 for monic + polynomials in Hermite form. + + Parameters + ---------- + roots : array_like + Sequence containing the roots. + + Returns + ------- + out : ndarray + 1-D array of coefficients. If all roots are real then `out` is a + real array, if some of the roots are complex, then `out` is complex + even if all the coefficients in the result are real (see Examples + below). + + See Also + -------- + numpy.polynomial.polynomial.polyfromroots + numpy.polynomial.legendre.legfromroots + numpy.polynomial.laguerre.lagfromroots + numpy.polynomial.chebyshev.chebfromroots + numpy.polynomial.hermite_e.hermefromroots + + Examples + -------- + >>> from numpy.polynomial.hermite import hermfromroots, hermval + >>> coef = hermfromroots((-1, 0, 1)) + >>> hermval((-1, 0, 1), coef) + array([0., 0., 0.]) + >>> coef = hermfromroots((-1j, 1j)) + >>> hermval((-1j, 1j), coef) + array([0.+0.j, 0.+0.j]) + + """ + return pu._fromroots(hermline, hermmul, roots) + + +def hermadd(c1, c2): + """ + Add one Hermite series to another. + + Returns the sum of two Hermite series `c1` + `c2`. The arguments + are sequences of coefficients ordered from lowest order term to + highest, i.e., [1,2,3] represents the series ``P_0 + 2*P_1 + 3*P_2``. + + Parameters + ---------- + c1, c2 : array_like + 1-D arrays of Hermite series coefficients ordered from low to + high. + + Returns + ------- + out : ndarray + Array representing the Hermite series of their sum. + + See Also + -------- + hermsub, hermmulx, hermmul, hermdiv, hermpow + + Notes + ----- + Unlike multiplication, division, etc., the sum of two Hermite series + is a Hermite series (without having to "reproject" the result onto + the basis set) so addition, just like that of "standard" polynomials, + is simply "component-wise." + + Examples + -------- + >>> from numpy.polynomial.hermite import hermadd + >>> hermadd([1, 2, 3], [1, 2, 3, 4]) + array([2., 4., 6., 4.]) + + """ + return pu._add(c1, c2) + + +def hermsub(c1, c2): + """ + Subtract one Hermite series from another. + + Returns the difference of two Hermite series `c1` - `c2`. The + sequences of coefficients are from lowest order term to highest, i.e., + [1,2,3] represents the series ``P_0 + 2*P_1 + 3*P_2``. + + Parameters + ---------- + c1, c2 : array_like + 1-D arrays of Hermite series coefficients ordered from low to + high. + + Returns + ------- + out : ndarray + Of Hermite series coefficients representing their difference. + + See Also + -------- + hermadd, hermmulx, hermmul, hermdiv, hermpow + + Notes + ----- + Unlike multiplication, division, etc., the difference of two Hermite + series is a Hermite series (without having to "reproject" the result + onto the basis set) so subtraction, just like that of "standard" + polynomials, is simply "component-wise." + + Examples + -------- + >>> from numpy.polynomial.hermite import hermsub + >>> hermsub([1, 2, 3, 4], [1, 2, 3]) + array([0., 0., 0., 4.]) + + """ + return pu._sub(c1, c2) + + +def hermmulx(c): + """Multiply a Hermite series by x. + + Multiply the Hermite series `c` by x, where x is the independent + variable. + + + Parameters + ---------- + c : array_like + 1-D array of Hermite series coefficients ordered from low to + high. + + Returns + ------- + out : ndarray + Array representing the result of the multiplication. + + See Also + -------- + hermadd, hermsub, hermmul, hermdiv, hermpow + + Notes + ----- + The multiplication uses the recursion relationship for Hermite + polynomials in the form + + .. math:: + + xP_i(x) = (P_{i + 1}(x)/2 + i*P_{i - 1}(x)) + + Examples + -------- + >>> from numpy.polynomial.hermite import hermmulx + >>> hermmulx([1, 2, 3]) + array([2. , 6.5, 1. , 1.5]) + + """ + # c is a trimmed copy + [c] = pu.as_series([c]) + # The zero series needs special treatment + if len(c) == 1 and c[0] == 0: + return c + + prd = np.empty(len(c) + 1, dtype=c.dtype) + prd[0] = c[0]*0 + prd[1] = c[0]/2 + for i in range(1, len(c)): + prd[i + 1] = c[i]/2 + prd[i - 1] += c[i]*i + return prd + + +def hermmul(c1, c2): + """ + Multiply one Hermite series by another. + + Returns the product of two Hermite series `c1` * `c2`. The arguments + are sequences of coefficients, from lowest order "term" to highest, + e.g., [1,2,3] represents the series ``P_0 + 2*P_1 + 3*P_2``. + + Parameters + ---------- + c1, c2 : array_like + 1-D arrays of Hermite series coefficients ordered from low to + high. + + Returns + ------- + out : ndarray + Of Hermite series coefficients representing their product. + + See Also + -------- + hermadd, hermsub, hermmulx, hermdiv, hermpow + + Notes + ----- + In general, the (polynomial) product of two C-series results in terms + that are not in the Hermite polynomial basis set. Thus, to express + the product as a Hermite series, it is necessary to "reproject" the + product onto said basis set, which may produce "unintuitive" (but + correct) results; see Examples section below. + + Examples + -------- + >>> from numpy.polynomial.hermite import hermmul + >>> hermmul([1, 2, 3], [0, 1, 2]) + array([52., 29., 52., 7., 6.]) + + """ + # s1, s2 are trimmed copies + [c1, c2] = pu.as_series([c1, c2]) + + if len(c1) > len(c2): + c = c2 + xs = c1 + else: + c = c1 + xs = c2 + + if len(c) == 1: + c0 = c[0]*xs + c1 = 0 + elif len(c) == 2: + c0 = c[0]*xs + c1 = c[1]*xs + else: + nd = len(c) + c0 = c[-2]*xs + c1 = c[-1]*xs + for i in range(3, len(c) + 1): + tmp = c0 + nd = nd - 1 + c0 = hermsub(c[-i]*xs, c1*(2*(nd - 1))) + c1 = hermadd(tmp, hermmulx(c1)*2) + return hermadd(c0, hermmulx(c1)*2) + + +def hermdiv(c1, c2): + """ + Divide one Hermite series by another. + + Returns the quotient-with-remainder of two Hermite series + `c1` / `c2`. The arguments are sequences of coefficients from lowest + order "term" to highest, e.g., [1,2,3] represents the series + ``P_0 + 2*P_1 + 3*P_2``. + + Parameters + ---------- + c1, c2 : array_like + 1-D arrays of Hermite series coefficients ordered from low to + high. + + Returns + ------- + [quo, rem] : ndarrays + Of Hermite series coefficients representing the quotient and + remainder. + + See Also + -------- + hermadd, hermsub, hermmulx, hermmul, hermpow + + Notes + ----- + In general, the (polynomial) division of one Hermite series by another + results in quotient and remainder terms that are not in the Hermite + polynomial basis set. Thus, to express these results as a Hermite + series, it is necessary to "reproject" the results onto the Hermite + basis set, which may produce "unintuitive" (but correct) results; see + Examples section below. + + Examples + -------- + >>> from numpy.polynomial.hermite import hermdiv + >>> hermdiv([ 52., 29., 52., 7., 6.], [0, 1, 2]) + (array([1., 2., 3.]), array([0.])) + >>> hermdiv([ 54., 31., 52., 7., 6.], [0, 1, 2]) + (array([1., 2., 3.]), array([2., 2.])) + >>> hermdiv([ 53., 30., 52., 7., 6.], [0, 1, 2]) + (array([1., 2., 3.]), array([1., 1.])) + + """ + return pu._div(hermmul, c1, c2) + + +def hermpow(c, pow, maxpower=16): + """Raise a Hermite series to a power. + + Returns the Hermite series `c` raised to the power `pow`. The + argument `c` is a sequence of coefficients ordered from low to high. + i.e., [1,2,3] is the series ``P_0 + 2*P_1 + 3*P_2.`` + + Parameters + ---------- + c : array_like + 1-D array of Hermite series coefficients ordered from low to + high. + pow : integer + Power to which the series will be raised + maxpower : integer, optional + Maximum power allowed. This is mainly to limit growth of the series + to unmanageable size. Default is 16 + + Returns + ------- + coef : ndarray + Hermite series of power. + + See Also + -------- + hermadd, hermsub, hermmulx, hermmul, hermdiv + + Examples + -------- + >>> from numpy.polynomial.hermite import hermpow + >>> hermpow([1, 2, 3], 2) + array([81., 52., 82., 12., 9.]) + + """ + return pu._pow(hermmul, c, pow, maxpower) + + +def hermder(c, m=1, scl=1, axis=0): + """ + Differentiate a Hermite series. + + Returns the Hermite series coefficients `c` differentiated `m` times + along `axis`. At each iteration the result is multiplied by `scl` (the + scaling factor is for use in a linear change of variable). The argument + `c` is an array of coefficients from low to high degree along each + axis, e.g., [1,2,3] represents the series ``1*H_0 + 2*H_1 + 3*H_2`` + while [[1,2],[1,2]] represents ``1*H_0(x)*H_0(y) + 1*H_1(x)*H_0(y) + + 2*H_0(x)*H_1(y) + 2*H_1(x)*H_1(y)`` if axis=0 is ``x`` and axis=1 is + ``y``. + + Parameters + ---------- + c : array_like + Array of Hermite series coefficients. If `c` is multidimensional the + different axis correspond to different variables with the degree in + each axis given by the corresponding index. + m : int, optional + Number of derivatives taken, must be non-negative. (Default: 1) + scl : scalar, optional + Each differentiation is multiplied by `scl`. The end result is + multiplication by ``scl**m``. This is for use in a linear change of + variable. (Default: 1) + axis : int, optional + Axis over which the derivative is taken. (Default: 0). + + .. versionadded:: 1.7.0 + + Returns + ------- + der : ndarray + Hermite series of the derivative. + + See Also + -------- + hermint + + Notes + ----- + In general, the result of differentiating a Hermite series does not + resemble the same operation on a power series. Thus the result of this + function may be "unintuitive," albeit correct; see Examples section + below. + + Examples + -------- + >>> from numpy.polynomial.hermite import hermder + >>> hermder([ 1. , 0.5, 0.5, 0.5]) + array([1., 2., 3.]) + >>> hermder([-0.5, 1./2., 1./8., 1./12., 1./16.], m=2) + array([1., 2., 3.]) + + """ + c = np.array(c, ndmin=1, copy=True) + if c.dtype.char in '?bBhHiIlLqQpP': + c = c.astype(np.double) + cnt = pu._deprecate_as_int(m, "the order of derivation") + iaxis = pu._deprecate_as_int(axis, "the axis") + if cnt < 0: + raise ValueError("The order of derivation must be non-negative") + iaxis = normalize_axis_index(iaxis, c.ndim) + + if cnt == 0: + return c + + c = np.moveaxis(c, iaxis, 0) + n = len(c) + if cnt >= n: + c = c[:1]*0 + else: + for i in range(cnt): + n = n - 1 + c *= scl + der = np.empty((n,) + c.shape[1:], dtype=c.dtype) + for j in range(n, 0, -1): + der[j - 1] = (2*j)*c[j] + c = der + c = np.moveaxis(c, 0, iaxis) + return c + + +def hermint(c, m=1, k=[], lbnd=0, scl=1, axis=0): + """ + Integrate a Hermite series. + + Returns the Hermite series coefficients `c` integrated `m` times from + `lbnd` along `axis`. At each iteration the resulting series is + **multiplied** by `scl` and an integration constant, `k`, is added. + The scaling factor is for use in a linear change of variable. ("Buyer + beware": note that, depending on what one is doing, one may want `scl` + to be the reciprocal of what one might expect; for more information, + see the Notes section below.) The argument `c` is an array of + coefficients from low to high degree along each axis, e.g., [1,2,3] + represents the series ``H_0 + 2*H_1 + 3*H_2`` while [[1,2],[1,2]] + represents ``1*H_0(x)*H_0(y) + 1*H_1(x)*H_0(y) + 2*H_0(x)*H_1(y) + + 2*H_1(x)*H_1(y)`` if axis=0 is ``x`` and axis=1 is ``y``. + + Parameters + ---------- + c : array_like + Array of Hermite series coefficients. If c is multidimensional the + different axis correspond to different variables with the degree in + each axis given by the corresponding index. + m : int, optional + Order of integration, must be positive. (Default: 1) + k : {[], list, scalar}, optional + Integration constant(s). The value of the first integral at + ``lbnd`` is the first value in the list, the value of the second + integral at ``lbnd`` is the second value, etc. If ``k == []`` (the + default), all constants are set to zero. If ``m == 1``, a single + scalar can be given instead of a list. + lbnd : scalar, optional + The lower bound of the integral. (Default: 0) + scl : scalar, optional + Following each integration the result is *multiplied* by `scl` + before the integration constant is added. (Default: 1) + axis : int, optional + Axis over which the integral is taken. (Default: 0). + + .. versionadded:: 1.7.0 + + Returns + ------- + S : ndarray + Hermite series coefficients of the integral. + + Raises + ------ + ValueError + If ``m < 0``, ``len(k) > m``, ``np.ndim(lbnd) != 0``, or + ``np.ndim(scl) != 0``. + + See Also + -------- + hermder + + Notes + ----- + Note that the result of each integration is *multiplied* by `scl`. + Why is this important to note? Say one is making a linear change of + variable :math:`u = ax + b` in an integral relative to `x`. Then + :math:`dx = du/a`, so one will need to set `scl` equal to + :math:`1/a` - perhaps not what one would have first thought. + + Also note that, in general, the result of integrating a C-series needs + to be "reprojected" onto the C-series basis set. Thus, typically, + the result of this function is "unintuitive," albeit correct; see + Examples section below. + + Examples + -------- + >>> from numpy.polynomial.hermite import hermint + >>> hermint([1,2,3]) # integrate once, value 0 at 0. + array([1. , 0.5, 0.5, 0.5]) + >>> hermint([1,2,3], m=2) # integrate twice, value & deriv 0 at 0 + array([-0.5 , 0.5 , 0.125 , 0.08333333, 0.0625 ]) # may vary + >>> hermint([1,2,3], k=1) # integrate once, value 1 at 0. + array([2. , 0.5, 0.5, 0.5]) + >>> hermint([1,2,3], lbnd=-1) # integrate once, value 0 at -1 + array([-2. , 0.5, 0.5, 0.5]) + >>> hermint([1,2,3], m=2, k=[1,2], lbnd=-1) + array([ 1.66666667, -0.5 , 0.125 , 0.08333333, 0.0625 ]) # may vary + + """ + c = np.array(c, ndmin=1, copy=True) + if c.dtype.char in '?bBhHiIlLqQpP': + c = c.astype(np.double) + if not np.iterable(k): + k = [k] + cnt = pu._deprecate_as_int(m, "the order of integration") + iaxis = pu._deprecate_as_int(axis, "the axis") + if cnt < 0: + raise ValueError("The order of integration must be non-negative") + if len(k) > cnt: + raise ValueError("Too many integration constants") + if np.ndim(lbnd) != 0: + raise ValueError("lbnd must be a scalar.") + if np.ndim(scl) != 0: + raise ValueError("scl must be a scalar.") + iaxis = normalize_axis_index(iaxis, c.ndim) + + if cnt == 0: + return c + + c = np.moveaxis(c, iaxis, 0) + k = list(k) + [0]*(cnt - len(k)) + for i in range(cnt): + n = len(c) + c *= scl + if n == 1 and np.all(c[0] == 0): + c[0] += k[i] + else: + tmp = np.empty((n + 1,) + c.shape[1:], dtype=c.dtype) + tmp[0] = c[0]*0 + tmp[1] = c[0]/2 + for j in range(1, n): + tmp[j + 1] = c[j]/(2*(j + 1)) + tmp[0] += k[i] - hermval(lbnd, tmp) + c = tmp + c = np.moveaxis(c, 0, iaxis) + return c + + +def hermval(x, c, tensor=True): + """ + Evaluate an Hermite series at points x. + + If `c` is of length `n + 1`, this function returns the value: + + .. math:: p(x) = c_0 * H_0(x) + c_1 * H_1(x) + ... + c_n * H_n(x) + + The parameter `x` is converted to an array only if it is a tuple or a + list, otherwise it is treated as a scalar. In either case, either `x` + or its elements must support multiplication and addition both with + themselves and with the elements of `c`. + + If `c` is a 1-D array, then `p(x)` will have the same shape as `x`. If + `c` is multidimensional, then the shape of the result depends on the + value of `tensor`. If `tensor` is true the shape will be c.shape[1:] + + x.shape. If `tensor` is false the shape will be c.shape[1:]. Note that + scalars have shape (,). + + Trailing zeros in the coefficients will be used in the evaluation, so + they should be avoided if efficiency is a concern. + + Parameters + ---------- + x : array_like, compatible object + If `x` is a list or tuple, it is converted to an ndarray, otherwise + it is left unchanged and treated as a scalar. In either case, `x` + or its elements must support addition and multiplication with + themselves and with the elements of `c`. + c : array_like + Array of coefficients ordered so that the coefficients for terms of + degree n are contained in c[n]. If `c` is multidimensional the + remaining indices enumerate multiple polynomials. In the two + dimensional case the coefficients may be thought of as stored in + the columns of `c`. + tensor : boolean, optional + If True, the shape of the coefficient array is extended with ones + on the right, one for each dimension of `x`. Scalars have dimension 0 + for this action. The result is that every column of coefficients in + `c` is evaluated for every element of `x`. If False, `x` is broadcast + over the columns of `c` for the evaluation. This keyword is useful + when `c` is multidimensional. The default value is True. + + .. versionadded:: 1.7.0 + + Returns + ------- + values : ndarray, algebra_like + The shape of the return value is described above. + + See Also + -------- + hermval2d, hermgrid2d, hermval3d, hermgrid3d + + Notes + ----- + The evaluation uses Clenshaw recursion, aka synthetic division. + + Examples + -------- + >>> from numpy.polynomial.hermite import hermval + >>> coef = [1,2,3] + >>> hermval(1, coef) + 11.0 + >>> hermval([[1,2],[3,4]], coef) + array([[ 11., 51.], + [115., 203.]]) + + """ + c = np.array(c, ndmin=1, copy=False) + if c.dtype.char in '?bBhHiIlLqQpP': + c = c.astype(np.double) + if isinstance(x, (tuple, list)): + x = np.asarray(x) + if isinstance(x, np.ndarray) and tensor: + c = c.reshape(c.shape + (1,)*x.ndim) + + x2 = x*2 + if len(c) == 1: + c0 = c[0] + c1 = 0 + elif len(c) == 2: + c0 = c[0] + c1 = c[1] + else: + nd = len(c) + c0 = c[-2] + c1 = c[-1] + for i in range(3, len(c) + 1): + tmp = c0 + nd = nd - 1 + c0 = c[-i] - c1*(2*(nd - 1)) + c1 = tmp + c1*x2 + return c0 + c1*x2 + + +def hermval2d(x, y, c): + """ + Evaluate a 2-D Hermite series at points (x, y). + + This function returns the values: + + .. math:: p(x,y) = \\sum_{i,j} c_{i,j} * H_i(x) * H_j(y) + + The parameters `x` and `y` are converted to arrays only if they are + tuples or a lists, otherwise they are treated as a scalars and they + must have the same shape after conversion. In either case, either `x` + and `y` or their elements must support multiplication and addition both + with themselves and with the elements of `c`. + + If `c` is a 1-D array a one is implicitly appended to its shape to make + it 2-D. The shape of the result will be c.shape[2:] + x.shape. + + Parameters + ---------- + x, y : array_like, compatible objects + The two dimensional series is evaluated at the points `(x, y)`, + where `x` and `y` must have the same shape. If `x` or `y` is a list + or tuple, it is first converted to an ndarray, otherwise it is left + unchanged and if it isn't an ndarray it is treated as a scalar. + c : array_like + Array of coefficients ordered so that the coefficient of the term + of multi-degree i,j is contained in ``c[i,j]``. If `c` has + dimension greater than two the remaining indices enumerate multiple + sets of coefficients. + + Returns + ------- + values : ndarray, compatible object + The values of the two dimensional polynomial at points formed with + pairs of corresponding values from `x` and `y`. + + See Also + -------- + hermval, hermgrid2d, hermval3d, hermgrid3d + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + return pu._valnd(hermval, c, x, y) + + +def hermgrid2d(x, y, c): + """ + Evaluate a 2-D Hermite series on the Cartesian product of x and y. + + This function returns the values: + + .. math:: p(a,b) = \\sum_{i,j} c_{i,j} * H_i(a) * H_j(b) + + where the points `(a, b)` consist of all pairs formed by taking + `a` from `x` and `b` from `y`. The resulting points form a grid with + `x` in the first dimension and `y` in the second. + + The parameters `x` and `y` are converted to arrays only if they are + tuples or a lists, otherwise they are treated as a scalars. In either + case, either `x` and `y` or their elements must support multiplication + and addition both with themselves and with the elements of `c`. + + If `c` has fewer than two dimensions, ones are implicitly appended to + its shape to make it 2-D. The shape of the result will be c.shape[2:] + + x.shape. + + Parameters + ---------- + x, y : array_like, compatible objects + The two dimensional series is evaluated at the points in the + Cartesian product of `x` and `y`. If `x` or `y` is a list or + tuple, it is first converted to an ndarray, otherwise it is left + unchanged and, if it isn't an ndarray, it is treated as a scalar. + c : array_like + Array of coefficients ordered so that the coefficients for terms of + degree i,j are contained in ``c[i,j]``. If `c` has dimension + greater than two the remaining indices enumerate multiple sets of + coefficients. + + Returns + ------- + values : ndarray, compatible object + The values of the two dimensional polynomial at points in the Cartesian + product of `x` and `y`. + + See Also + -------- + hermval, hermval2d, hermval3d, hermgrid3d + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + return pu._gridnd(hermval, c, x, y) + + +def hermval3d(x, y, z, c): + """ + Evaluate a 3-D Hermite series at points (x, y, z). + + This function returns the values: + + .. math:: p(x,y,z) = \\sum_{i,j,k} c_{i,j,k} * H_i(x) * H_j(y) * H_k(z) + + The parameters `x`, `y`, and `z` are converted to arrays only if + they are tuples or a lists, otherwise they are treated as a scalars and + they must have the same shape after conversion. In either case, either + `x`, `y`, and `z` or their elements must support multiplication and + addition both with themselves and with the elements of `c`. + + If `c` has fewer than 3 dimensions, ones are implicitly appended to its + shape to make it 3-D. The shape of the result will be c.shape[3:] + + x.shape. + + Parameters + ---------- + x, y, z : array_like, compatible object + The three dimensional series is evaluated at the points + `(x, y, z)`, where `x`, `y`, and `z` must have the same shape. If + any of `x`, `y`, or `z` is a list or tuple, it is first converted + to an ndarray, otherwise it is left unchanged and if it isn't an + ndarray it is treated as a scalar. + c : array_like + Array of coefficients ordered so that the coefficient of the term of + multi-degree i,j,k is contained in ``c[i,j,k]``. If `c` has dimension + greater than 3 the remaining indices enumerate multiple sets of + coefficients. + + Returns + ------- + values : ndarray, compatible object + The values of the multidimensional polynomial on points formed with + triples of corresponding values from `x`, `y`, and `z`. + + See Also + -------- + hermval, hermval2d, hermgrid2d, hermgrid3d + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + return pu._valnd(hermval, c, x, y, z) + + +def hermgrid3d(x, y, z, c): + """ + Evaluate a 3-D Hermite series on the Cartesian product of x, y, and z. + + This function returns the values: + + .. math:: p(a,b,c) = \\sum_{i,j,k} c_{i,j,k} * H_i(a) * H_j(b) * H_k(c) + + where the points `(a, b, c)` consist of all triples formed by taking + `a` from `x`, `b` from `y`, and `c` from `z`. The resulting points form + a grid with `x` in the first dimension, `y` in the second, and `z` in + the third. + + The parameters `x`, `y`, and `z` are converted to arrays only if they + are tuples or a lists, otherwise they are treated as a scalars. In + either case, either `x`, `y`, and `z` or their elements must support + multiplication and addition both with themselves and with the elements + of `c`. + + If `c` has fewer than three dimensions, ones are implicitly appended to + its shape to make it 3-D. The shape of the result will be c.shape[3:] + + x.shape + y.shape + z.shape. + + Parameters + ---------- + x, y, z : array_like, compatible objects + The three dimensional series is evaluated at the points in the + Cartesian product of `x`, `y`, and `z`. If `x`,`y`, or `z` is a + list or tuple, it is first converted to an ndarray, otherwise it is + left unchanged and, if it isn't an ndarray, it is treated as a + scalar. + c : array_like + Array of coefficients ordered so that the coefficients for terms of + degree i,j are contained in ``c[i,j]``. If `c` has dimension + greater than two the remaining indices enumerate multiple sets of + coefficients. + + Returns + ------- + values : ndarray, compatible object + The values of the two dimensional polynomial at points in the Cartesian + product of `x` and `y`. + + See Also + -------- + hermval, hermval2d, hermgrid2d, hermval3d + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + return pu._gridnd(hermval, c, x, y, z) + + +def hermvander(x, deg): + """Pseudo-Vandermonde matrix of given degree. + + Returns the pseudo-Vandermonde matrix of degree `deg` and sample points + `x`. The pseudo-Vandermonde matrix is defined by + + .. math:: V[..., i] = H_i(x), + + where `0 <= i <= deg`. The leading indices of `V` index the elements of + `x` and the last index is the degree of the Hermite polynomial. + + If `c` is a 1-D array of coefficients of length `n + 1` and `V` is the + array ``V = hermvander(x, n)``, then ``np.dot(V, c)`` and + ``hermval(x, c)`` are the same up to roundoff. This equivalence is + useful both for least squares fitting and for the evaluation of a large + number of Hermite series of the same degree and sample points. + + Parameters + ---------- + x : array_like + Array of points. The dtype is converted to float64 or complex128 + depending on whether any of the elements are complex. If `x` is + scalar it is converted to a 1-D array. + deg : int + Degree of the resulting matrix. + + Returns + ------- + vander : ndarray + The pseudo-Vandermonde matrix. The shape of the returned matrix is + ``x.shape + (deg + 1,)``, where The last index is the degree of the + corresponding Hermite polynomial. The dtype will be the same as + the converted `x`. + + Examples + -------- + >>> from numpy.polynomial.hermite import hermvander + >>> x = np.array([-1, 0, 1]) + >>> hermvander(x, 3) + array([[ 1., -2., 2., 4.], + [ 1., 0., -2., -0.], + [ 1., 2., 2., -4.]]) + + """ + ideg = pu._deprecate_as_int(deg, "deg") + if ideg < 0: + raise ValueError("deg must be non-negative") + + x = np.array(x, copy=False, ndmin=1) + 0.0 + dims = (ideg + 1,) + x.shape + dtyp = x.dtype + v = np.empty(dims, dtype=dtyp) + v[0] = x*0 + 1 + if ideg > 0: + x2 = x*2 + v[1] = x2 + for i in range(2, ideg + 1): + v[i] = (v[i-1]*x2 - v[i-2]*(2*(i - 1))) + return np.moveaxis(v, 0, -1) + + +def hermvander2d(x, y, deg): + """Pseudo-Vandermonde matrix of given degrees. + + Returns the pseudo-Vandermonde matrix of degrees `deg` and sample + points `(x, y)`. The pseudo-Vandermonde matrix is defined by + + .. math:: V[..., (deg[1] + 1)*i + j] = H_i(x) * H_j(y), + + where `0 <= i <= deg[0]` and `0 <= j <= deg[1]`. The leading indices of + `V` index the points `(x, y)` and the last index encodes the degrees of + the Hermite polynomials. + + If ``V = hermvander2d(x, y, [xdeg, ydeg])``, then the columns of `V` + correspond to the elements of a 2-D coefficient array `c` of shape + (xdeg + 1, ydeg + 1) in the order + + .. math:: c_{00}, c_{01}, c_{02} ... , c_{10}, c_{11}, c_{12} ... + + and ``np.dot(V, c.flat)`` and ``hermval2d(x, y, c)`` will be the same + up to roundoff. This equivalence is useful both for least squares + fitting and for the evaluation of a large number of 2-D Hermite + series of the same degrees and sample points. + + Parameters + ---------- + x, y : array_like + Arrays of point coordinates, all of the same shape. The dtypes + will be converted to either float64 or complex128 depending on + whether any of the elements are complex. Scalars are converted to 1-D + arrays. + deg : list of ints + List of maximum degrees of the form [x_deg, y_deg]. + + Returns + ------- + vander2d : ndarray + The shape of the returned matrix is ``x.shape + (order,)``, where + :math:`order = (deg[0]+1)*(deg[1]+1)`. The dtype will be the same + as the converted `x` and `y`. + + See Also + -------- + hermvander, hermvander3d, hermval2d, hermval3d + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + return pu._vander_nd_flat((hermvander, hermvander), (x, y), deg) + + +def hermvander3d(x, y, z, deg): + """Pseudo-Vandermonde matrix of given degrees. + + Returns the pseudo-Vandermonde matrix of degrees `deg` and sample + points `(x, y, z)`. If `l, m, n` are the given degrees in `x, y, z`, + then The pseudo-Vandermonde matrix is defined by + + .. math:: V[..., (m+1)(n+1)i + (n+1)j + k] = H_i(x)*H_j(y)*H_k(z), + + where `0 <= i <= l`, `0 <= j <= m`, and `0 <= j <= n`. The leading + indices of `V` index the points `(x, y, z)` and the last index encodes + the degrees of the Hermite polynomials. + + If ``V = hermvander3d(x, y, z, [xdeg, ydeg, zdeg])``, then the columns + of `V` correspond to the elements of a 3-D coefficient array `c` of + shape (xdeg + 1, ydeg + 1, zdeg + 1) in the order + + .. math:: c_{000}, c_{001}, c_{002},... , c_{010}, c_{011}, c_{012},... + + and ``np.dot(V, c.flat)`` and ``hermval3d(x, y, z, c)`` will be the + same up to roundoff. This equivalence is useful both for least squares + fitting and for the evaluation of a large number of 3-D Hermite + series of the same degrees and sample points. + + Parameters + ---------- + x, y, z : array_like + Arrays of point coordinates, all of the same shape. The dtypes will + be converted to either float64 or complex128 depending on whether + any of the elements are complex. Scalars are converted to 1-D + arrays. + deg : list of ints + List of maximum degrees of the form [x_deg, y_deg, z_deg]. + + Returns + ------- + vander3d : ndarray + The shape of the returned matrix is ``x.shape + (order,)``, where + :math:`order = (deg[0]+1)*(deg[1]+1)*(deg[2]+1)`. The dtype will + be the same as the converted `x`, `y`, and `z`. + + See Also + -------- + hermvander, hermvander3d, hermval2d, hermval3d + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + return pu._vander_nd_flat((hermvander, hermvander, hermvander), (x, y, z), deg) + + +def hermfit(x, y, deg, rcond=None, full=False, w=None): + """ + Least squares fit of Hermite series to data. + + Return the coefficients of a Hermite series of degree `deg` that is the + least squares fit to the data values `y` given at points `x`. If `y` is + 1-D the returned coefficients will also be 1-D. If `y` is 2-D multiple + fits are done, one for each column of `y`, and the resulting + coefficients are stored in the corresponding columns of a 2-D return. + The fitted polynomial(s) are in the form + + .. math:: p(x) = c_0 + c_1 * H_1(x) + ... + c_n * H_n(x), + + where `n` is `deg`. + + Parameters + ---------- + x : array_like, shape (M,) + x-coordinates of the M sample points ``(x[i], y[i])``. + y : array_like, shape (M,) or (M, K) + y-coordinates of the sample points. Several data sets of sample + points sharing the same x-coordinates can be fitted at once by + passing in a 2D-array that contains one dataset per column. + deg : int or 1-D array_like + Degree(s) of the fitting polynomials. If `deg` is a single integer + all terms up to and including the `deg`'th term are included in the + fit. For NumPy versions >= 1.11.0 a list of integers specifying the + degrees of the terms to include may be used instead. + rcond : float, optional + Relative condition number of the fit. Singular values smaller than + this relative to the largest singular value will be ignored. The + default value is len(x)*eps, where eps is the relative precision of + the float type, about 2e-16 in most cases. + full : bool, optional + Switch determining nature of return value. When it is False (the + default) just the coefficients are returned, when True diagnostic + information from the singular value decomposition is also returned. + w : array_like, shape (`M`,), optional + Weights. If not None, the weight ``w[i]`` applies to the unsquared + residual ``y[i] - y_hat[i]`` at ``x[i]``. Ideally the weights are + chosen so that the errors of the products ``w[i]*y[i]`` all have the + same variance. When using inverse-variance weighting, use + ``w[i] = 1/sigma(y[i])``. The default value is None. + + Returns + ------- + coef : ndarray, shape (M,) or (M, K) + Hermite coefficients ordered from low to high. If `y` was 2-D, + the coefficients for the data in column k of `y` are in column + `k`. + + [residuals, rank, singular_values, rcond] : list + These values are only returned if ``full == True`` + + - residuals -- sum of squared residuals of the least squares fit + - rank -- the numerical rank of the scaled Vandermonde matrix + - singular_values -- singular values of the scaled Vandermonde matrix + - rcond -- value of `rcond`. + + For more details, see `numpy.linalg.lstsq`. + + Warns + ----- + RankWarning + The rank of the coefficient matrix in the least-squares fit is + deficient. The warning is only raised if ``full == False``. The + warnings can be turned off by + + >>> import warnings + >>> warnings.simplefilter('ignore', np.RankWarning) + + See Also + -------- + numpy.polynomial.chebyshev.chebfit + numpy.polynomial.legendre.legfit + numpy.polynomial.laguerre.lagfit + numpy.polynomial.polynomial.polyfit + numpy.polynomial.hermite_e.hermefit + hermval : Evaluates a Hermite series. + hermvander : Vandermonde matrix of Hermite series. + hermweight : Hermite weight function + numpy.linalg.lstsq : Computes a least-squares fit from the matrix. + scipy.interpolate.UnivariateSpline : Computes spline fits. + + Notes + ----- + The solution is the coefficients of the Hermite series `p` that + minimizes the sum of the weighted squared errors + + .. math:: E = \\sum_j w_j^2 * |y_j - p(x_j)|^2, + + where the :math:`w_j` are the weights. This problem is solved by + setting up the (typically) overdetermined matrix equation + + .. math:: V(x) * c = w * y, + + where `V` is the weighted pseudo Vandermonde matrix of `x`, `c` are the + coefficients to be solved for, `w` are the weights, `y` are the + observed values. This equation is then solved using the singular value + decomposition of `V`. + + If some of the singular values of `V` are so small that they are + neglected, then a `RankWarning` will be issued. This means that the + coefficient values may be poorly determined. Using a lower order fit + will usually get rid of the warning. The `rcond` parameter can also be + set to a value smaller than its default, but the resulting fit may be + spurious and have large contributions from roundoff error. + + Fits using Hermite series are probably most useful when the data can be + approximated by ``sqrt(w(x)) * p(x)``, where `w(x)` is the Hermite + weight. In that case the weight ``sqrt(w(x[i]))`` should be used + together with data values ``y[i]/sqrt(w(x[i]))``. The weight function is + available as `hermweight`. + + References + ---------- + .. [1] Wikipedia, "Curve fitting", + https://en.wikipedia.org/wiki/Curve_fitting + + Examples + -------- + >>> from numpy.polynomial.hermite import hermfit, hermval + >>> x = np.linspace(-10, 10) + >>> err = np.random.randn(len(x))/10 + >>> y = hermval(x, [1, 2, 3]) + err + >>> hermfit(x, y, 2) + array([1.0218, 1.9986, 2.9999]) # may vary + + """ + return pu._fit(hermvander, x, y, deg, rcond, full, w) + + +def hermcompanion(c): + """Return the scaled companion matrix of c. + + The basis polynomials are scaled so that the companion matrix is + symmetric when `c` is an Hermite basis polynomial. This provides + better eigenvalue estimates than the unscaled case and for basis + polynomials the eigenvalues are guaranteed to be real if + `numpy.linalg.eigvalsh` is used to obtain them. + + Parameters + ---------- + c : array_like + 1-D array of Hermite series coefficients ordered from low to high + degree. + + Returns + ------- + mat : ndarray + Scaled companion matrix of dimensions (deg, deg). + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + # c is a trimmed copy + [c] = pu.as_series([c]) + if len(c) < 2: + raise ValueError('Series must have maximum degree of at least 1.') + if len(c) == 2: + return np.array([[-.5*c[0]/c[1]]]) + + n = len(c) - 1 + mat = np.zeros((n, n), dtype=c.dtype) + scl = np.hstack((1., 1./np.sqrt(2.*np.arange(n - 1, 0, -1)))) + scl = np.multiply.accumulate(scl)[::-1] + top = mat.reshape(-1)[1::n+1] + bot = mat.reshape(-1)[n::n+1] + top[...] = np.sqrt(.5*np.arange(1, n)) + bot[...] = top + mat[:, -1] -= scl*c[:-1]/(2.0*c[-1]) + return mat + + +def hermroots(c): + """ + Compute the roots of a Hermite series. + + Return the roots (a.k.a. "zeros") of the polynomial + + .. math:: p(x) = \\sum_i c[i] * H_i(x). + + Parameters + ---------- + c : 1-D array_like + 1-D array of coefficients. + + Returns + ------- + out : ndarray + Array of the roots of the series. If all the roots are real, + then `out` is also real, otherwise it is complex. + + See Also + -------- + numpy.polynomial.polynomial.polyroots + numpy.polynomial.legendre.legroots + numpy.polynomial.laguerre.lagroots + numpy.polynomial.chebyshev.chebroots + numpy.polynomial.hermite_e.hermeroots + + Notes + ----- + The root estimates are obtained as the eigenvalues of the companion + matrix, Roots far from the origin of the complex plane may have large + errors due to the numerical instability of the series for such + values. Roots with multiplicity greater than 1 will also show larger + errors as the value of the series near such points is relatively + insensitive to errors in the roots. Isolated roots near the origin can + be improved by a few iterations of Newton's method. + + The Hermite series basis polynomials aren't powers of `x` so the + results of this function may seem unintuitive. + + Examples + -------- + >>> from numpy.polynomial.hermite import hermroots, hermfromroots + >>> coef = hermfromroots([-1, 0, 1]) + >>> coef + array([0. , 0.25 , 0. , 0.125]) + >>> hermroots(coef) + array([-1.00000000e+00, -1.38777878e-17, 1.00000000e+00]) + + """ + # c is a trimmed copy + [c] = pu.as_series([c]) + if len(c) <= 1: + return np.array([], dtype=c.dtype) + if len(c) == 2: + return np.array([-.5*c[0]/c[1]]) + + # rotated companion matrix reduces error + m = hermcompanion(c)[::-1,::-1] + r = la.eigvals(m) + r.sort() + return r + + +def _normed_hermite_n(x, n): + """ + Evaluate a normalized Hermite polynomial. + + Compute the value of the normalized Hermite polynomial of degree ``n`` + at the points ``x``. + + + Parameters + ---------- + x : ndarray of double. + Points at which to evaluate the function + n : int + Degree of the normalized Hermite function to be evaluated. + + Returns + ------- + values : ndarray + The shape of the return value is described above. + + Notes + ----- + .. versionadded:: 1.10.0 + + This function is needed for finding the Gauss points and integration + weights for high degrees. The values of the standard Hermite functions + overflow when n >= 207. + + """ + if n == 0: + return np.full(x.shape, 1/np.sqrt(np.sqrt(np.pi))) + + c0 = 0. + c1 = 1./np.sqrt(np.sqrt(np.pi)) + nd = float(n) + for i in range(n - 1): + tmp = c0 + c0 = -c1*np.sqrt((nd - 1.)/nd) + c1 = tmp + c1*x*np.sqrt(2./nd) + nd = nd - 1.0 + return c0 + c1*x*np.sqrt(2) + + +def hermgauss(deg): + """ + Gauss-Hermite quadrature. + + Computes the sample points and weights for Gauss-Hermite quadrature. + These sample points and weights will correctly integrate polynomials of + degree :math:`2*deg - 1` or less over the interval :math:`[-\\inf, \\inf]` + with the weight function :math:`f(x) = \\exp(-x^2)`. + + Parameters + ---------- + deg : int + Number of sample points and weights. It must be >= 1. + + Returns + ------- + x : ndarray + 1-D ndarray containing the sample points. + y : ndarray + 1-D ndarray containing the weights. + + Notes + ----- + + .. versionadded:: 1.7.0 + + The results have only been tested up to degree 100, higher degrees may + be problematic. The weights are determined by using the fact that + + .. math:: w_k = c / (H'_n(x_k) * H_{n-1}(x_k)) + + where :math:`c` is a constant independent of :math:`k` and :math:`x_k` + is the k'th root of :math:`H_n`, and then scaling the results to get + the right value when integrating 1. + + """ + ideg = pu._deprecate_as_int(deg, "deg") + if ideg <= 0: + raise ValueError("deg must be a positive integer") + + # first approximation of roots. We use the fact that the companion + # matrix is symmetric in this case in order to obtain better zeros. + c = np.array([0]*deg + [1], dtype=np.float64) + m = hermcompanion(c) + x = la.eigvalsh(m) + + # improve roots by one application of Newton + dy = _normed_hermite_n(x, ideg) + df = _normed_hermite_n(x, ideg - 1) * np.sqrt(2*ideg) + x -= dy/df + + # compute the weights. We scale the factor to avoid possible numerical + # overflow. + fm = _normed_hermite_n(x, ideg - 1) + fm /= np.abs(fm).max() + w = 1/(fm * fm) + + # for Hermite we can also symmetrize + w = (w + w[::-1])/2 + x = (x - x[::-1])/2 + + # scale w to get the right value + w *= np.sqrt(np.pi) / w.sum() + + return x, w + + +def hermweight(x): + """ + Weight function of the Hermite polynomials. + + The weight function is :math:`\\exp(-x^2)` and the interval of + integration is :math:`[-\\inf, \\inf]`. the Hermite polynomials are + orthogonal, but not normalized, with respect to this weight function. + + Parameters + ---------- + x : array_like + Values at which the weight function will be computed. + + Returns + ------- + w : ndarray + The weight function at `x`. + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + w = np.exp(-x**2) + return w + + +# +# Hermite series class +# + +class Hermite(ABCPolyBase): + """An Hermite series class. + + The Hermite class provides the standard Python numerical methods + '+', '-', '*', '//', '%', 'divmod', '**', and '()' as well as the + attributes and methods listed in the `ABCPolyBase` documentation. + + Parameters + ---------- + coef : array_like + Hermite coefficients in order of increasing degree, i.e, + ``(1, 2, 3)`` gives ``1*H_0(x) + 2*H_1(X) + 3*H_2(x)``. + domain : (2,) array_like, optional + Domain to use. The interval ``[domain[0], domain[1]]`` is mapped + to the interval ``[window[0], window[1]]`` by shifting and scaling. + The default value is [-1, 1]. + window : (2,) array_like, optional + Window, see `domain` for its use. The default value is [-1, 1]. + + .. versionadded:: 1.6.0 + symbol : str, optional + Symbol used to represent the independent variable in string + representations of the polynomial expression, e.g. for printing. + The symbol must be a valid Python identifier. Default value is 'x'. + + .. versionadded:: 1.24 + + """ + # Virtual Functions + _add = staticmethod(hermadd) + _sub = staticmethod(hermsub) + _mul = staticmethod(hermmul) + _div = staticmethod(hermdiv) + _pow = staticmethod(hermpow) + _val = staticmethod(hermval) + _int = staticmethod(hermint) + _der = staticmethod(hermder) + _fit = staticmethod(hermfit) + _line = staticmethod(hermline) + _roots = staticmethod(hermroots) + _fromroots = staticmethod(hermfromroots) + + # Virtual properties + domain = np.array(hermdomain) + window = np.array(hermdomain) + basis_name = 'H' diff --git a/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/hermite.pyi b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/hermite.pyi new file mode 100644 index 0000000000000000000000000000000000000000..0d3556d696410689b4614138ad4cf1f6c2283a9c --- /dev/null +++ b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/hermite.pyi @@ -0,0 +1,46 @@ +from typing import Any + +from numpy import ndarray, dtype, int_, float_ +from numpy.polynomial._polybase import ABCPolyBase +from numpy.polynomial.polyutils import trimcoef + +__all__: list[str] + +hermtrim = trimcoef + +def poly2herm(pol): ... +def herm2poly(c): ... + +hermdomain: ndarray[Any, dtype[int_]] +hermzero: ndarray[Any, dtype[int_]] +hermone: ndarray[Any, dtype[int_]] +hermx: ndarray[Any, dtype[float_]] + +def hermline(off, scl): ... +def hermfromroots(roots): ... +def hermadd(c1, c2): ... +def hermsub(c1, c2): ... +def hermmulx(c): ... +def hermmul(c1, c2): ... +def hermdiv(c1, c2): ... +def hermpow(c, pow, maxpower=...): ... +def hermder(c, m=..., scl=..., axis=...): ... +def hermint(c, m=..., k = ..., lbnd=..., scl=..., axis=...): ... +def hermval(x, c, tensor=...): ... +def hermval2d(x, y, c): ... +def hermgrid2d(x, y, c): ... +def hermval3d(x, y, z, c): ... +def hermgrid3d(x, y, z, c): ... +def hermvander(x, deg): ... +def hermvander2d(x, y, deg): ... +def hermvander3d(x, y, z, deg): ... +def hermfit(x, y, deg, rcond=..., full=..., w=...): ... +def hermcompanion(c): ... +def hermroots(c): ... +def hermgauss(deg): ... +def hermweight(x): ... + +class Hermite(ABCPolyBase): + domain: Any + window: Any + basis_name: Any diff --git a/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/hermite_e.py b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/hermite_e.py new file mode 100644 index 0000000000000000000000000000000000000000..bdf29405bee7788d5ca6a8677b8402b9a7af393e --- /dev/null +++ b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/hermite_e.py @@ -0,0 +1,1695 @@ +""" +=================================================================== +HermiteE Series, "Probabilists" (:mod:`numpy.polynomial.hermite_e`) +=================================================================== + +This module provides a number of objects (mostly functions) useful for +dealing with Hermite_e series, including a `HermiteE` class that +encapsulates the usual arithmetic operations. (General information +on how this module represents and works with such polynomials is in the +docstring for its "parent" sub-package, `numpy.polynomial`). + +Classes +------- +.. autosummary:: + :toctree: generated/ + + HermiteE + +Constants +--------- +.. autosummary:: + :toctree: generated/ + + hermedomain + hermezero + hermeone + hermex + +Arithmetic +---------- +.. autosummary:: + :toctree: generated/ + + hermeadd + hermesub + hermemulx + hermemul + hermediv + hermepow + hermeval + hermeval2d + hermeval3d + hermegrid2d + hermegrid3d + +Calculus +-------- +.. autosummary:: + :toctree: generated/ + + hermeder + hermeint + +Misc Functions +-------------- +.. autosummary:: + :toctree: generated/ + + hermefromroots + hermeroots + hermevander + hermevander2d + hermevander3d + hermegauss + hermeweight + hermecompanion + hermefit + hermetrim + hermeline + herme2poly + poly2herme + +See also +-------- +`numpy.polynomial` + +""" +import numpy as np +import numpy.linalg as la +from numpy.core.multiarray import normalize_axis_index + +from . import polyutils as pu +from ._polybase import ABCPolyBase + +__all__ = [ + 'hermezero', 'hermeone', 'hermex', 'hermedomain', 'hermeline', + 'hermeadd', 'hermesub', 'hermemulx', 'hermemul', 'hermediv', + 'hermepow', 'hermeval', 'hermeder', 'hermeint', 'herme2poly', + 'poly2herme', 'hermefromroots', 'hermevander', 'hermefit', 'hermetrim', + 'hermeroots', 'HermiteE', 'hermeval2d', 'hermeval3d', 'hermegrid2d', + 'hermegrid3d', 'hermevander2d', 'hermevander3d', 'hermecompanion', + 'hermegauss', 'hermeweight'] + +hermetrim = pu.trimcoef + + +def poly2herme(pol): + """ + poly2herme(pol) + + Convert a polynomial to a Hermite series. + + Convert an array representing the coefficients of a polynomial (relative + to the "standard" basis) ordered from lowest degree to highest, to an + array of the coefficients of the equivalent Hermite series, ordered + from lowest to highest degree. + + Parameters + ---------- + pol : array_like + 1-D array containing the polynomial coefficients + + Returns + ------- + c : ndarray + 1-D array containing the coefficients of the equivalent Hermite + series. + + See Also + -------- + herme2poly + + Notes + ----- + The easy way to do conversions between polynomial basis sets + is to use the convert method of a class instance. + + Examples + -------- + >>> from numpy.polynomial.hermite_e import poly2herme + >>> poly2herme(np.arange(4)) + array([ 2., 10., 2., 3.]) + + """ + [pol] = pu.as_series([pol]) + deg = len(pol) - 1 + res = 0 + for i in range(deg, -1, -1): + res = hermeadd(hermemulx(res), pol[i]) + return res + + +def herme2poly(c): + """ + Convert a Hermite series to a polynomial. + + Convert an array representing the coefficients of a Hermite series, + ordered from lowest degree to highest, to an array of the coefficients + of the equivalent polynomial (relative to the "standard" basis) ordered + from lowest to highest degree. + + Parameters + ---------- + c : array_like + 1-D array containing the Hermite series coefficients, ordered + from lowest order term to highest. + + Returns + ------- + pol : ndarray + 1-D array containing the coefficients of the equivalent polynomial + (relative to the "standard" basis) ordered from lowest order term + to highest. + + See Also + -------- + poly2herme + + Notes + ----- + The easy way to do conversions between polynomial basis sets + is to use the convert method of a class instance. + + Examples + -------- + >>> from numpy.polynomial.hermite_e import herme2poly + >>> herme2poly([ 2., 10., 2., 3.]) + array([0., 1., 2., 3.]) + + """ + from .polynomial import polyadd, polysub, polymulx + + [c] = pu.as_series([c]) + n = len(c) + if n == 1: + return c + if n == 2: + return c + else: + c0 = c[-2] + c1 = c[-1] + # i is the current degree of c1 + for i in range(n - 1, 1, -1): + tmp = c0 + c0 = polysub(c[i - 2], c1*(i - 1)) + c1 = polyadd(tmp, polymulx(c1)) + return polyadd(c0, polymulx(c1)) + +# +# These are constant arrays are of integer type so as to be compatible +# with the widest range of other types, such as Decimal. +# + +# Hermite +hermedomain = np.array([-1, 1]) + +# Hermite coefficients representing zero. +hermezero = np.array([0]) + +# Hermite coefficients representing one. +hermeone = np.array([1]) + +# Hermite coefficients representing the identity x. +hermex = np.array([0, 1]) + + +def hermeline(off, scl): + """ + Hermite series whose graph is a straight line. + + Parameters + ---------- + off, scl : scalars + The specified line is given by ``off + scl*x``. + + Returns + ------- + y : ndarray + This module's representation of the Hermite series for + ``off + scl*x``. + + See Also + -------- + numpy.polynomial.polynomial.polyline + numpy.polynomial.chebyshev.chebline + numpy.polynomial.legendre.legline + numpy.polynomial.laguerre.lagline + numpy.polynomial.hermite.hermline + + Examples + -------- + >>> from numpy.polynomial.hermite_e import hermeline + >>> from numpy.polynomial.hermite_e import hermeline, hermeval + >>> hermeval(0,hermeline(3, 2)) + 3.0 + >>> hermeval(1,hermeline(3, 2)) + 5.0 + + """ + if scl != 0: + return np.array([off, scl]) + else: + return np.array([off]) + + +def hermefromroots(roots): + """ + Generate a HermiteE series with given roots. + + The function returns the coefficients of the polynomial + + .. math:: p(x) = (x - r_0) * (x - r_1) * ... * (x - r_n), + + in HermiteE form, where the `r_n` are the roots specified in `roots`. + If a zero has multiplicity n, then it must appear in `roots` n times. + For instance, if 2 is a root of multiplicity three and 3 is a root of + multiplicity 2, then `roots` looks something like [2, 2, 2, 3, 3]. The + roots can appear in any order. + + If the returned coefficients are `c`, then + + .. math:: p(x) = c_0 + c_1 * He_1(x) + ... + c_n * He_n(x) + + The coefficient of the last term is not generally 1 for monic + polynomials in HermiteE form. + + Parameters + ---------- + roots : array_like + Sequence containing the roots. + + Returns + ------- + out : ndarray + 1-D array of coefficients. If all roots are real then `out` is a + real array, if some of the roots are complex, then `out` is complex + even if all the coefficients in the result are real (see Examples + below). + + See Also + -------- + numpy.polynomial.polynomial.polyfromroots + numpy.polynomial.legendre.legfromroots + numpy.polynomial.laguerre.lagfromroots + numpy.polynomial.hermite.hermfromroots + numpy.polynomial.chebyshev.chebfromroots + + Examples + -------- + >>> from numpy.polynomial.hermite_e import hermefromroots, hermeval + >>> coef = hermefromroots((-1, 0, 1)) + >>> hermeval((-1, 0, 1), coef) + array([0., 0., 0.]) + >>> coef = hermefromroots((-1j, 1j)) + >>> hermeval((-1j, 1j), coef) + array([0.+0.j, 0.+0.j]) + + """ + return pu._fromroots(hermeline, hermemul, roots) + + +def hermeadd(c1, c2): + """ + Add one Hermite series to another. + + Returns the sum of two Hermite series `c1` + `c2`. The arguments + are sequences of coefficients ordered from lowest order term to + highest, i.e., [1,2,3] represents the series ``P_0 + 2*P_1 + 3*P_2``. + + Parameters + ---------- + c1, c2 : array_like + 1-D arrays of Hermite series coefficients ordered from low to + high. + + Returns + ------- + out : ndarray + Array representing the Hermite series of their sum. + + See Also + -------- + hermesub, hermemulx, hermemul, hermediv, hermepow + + Notes + ----- + Unlike multiplication, division, etc., the sum of two Hermite series + is a Hermite series (without having to "reproject" the result onto + the basis set) so addition, just like that of "standard" polynomials, + is simply "component-wise." + + Examples + -------- + >>> from numpy.polynomial.hermite_e import hermeadd + >>> hermeadd([1, 2, 3], [1, 2, 3, 4]) + array([2., 4., 6., 4.]) + + """ + return pu._add(c1, c2) + + +def hermesub(c1, c2): + """ + Subtract one Hermite series from another. + + Returns the difference of two Hermite series `c1` - `c2`. The + sequences of coefficients are from lowest order term to highest, i.e., + [1,2,3] represents the series ``P_0 + 2*P_1 + 3*P_2``. + + Parameters + ---------- + c1, c2 : array_like + 1-D arrays of Hermite series coefficients ordered from low to + high. + + Returns + ------- + out : ndarray + Of Hermite series coefficients representing their difference. + + See Also + -------- + hermeadd, hermemulx, hermemul, hermediv, hermepow + + Notes + ----- + Unlike multiplication, division, etc., the difference of two Hermite + series is a Hermite series (without having to "reproject" the result + onto the basis set) so subtraction, just like that of "standard" + polynomials, is simply "component-wise." + + Examples + -------- + >>> from numpy.polynomial.hermite_e import hermesub + >>> hermesub([1, 2, 3, 4], [1, 2, 3]) + array([0., 0., 0., 4.]) + + """ + return pu._sub(c1, c2) + + +def hermemulx(c): + """Multiply a Hermite series by x. + + Multiply the Hermite series `c` by x, where x is the independent + variable. + + + Parameters + ---------- + c : array_like + 1-D array of Hermite series coefficients ordered from low to + high. + + Returns + ------- + out : ndarray + Array representing the result of the multiplication. + + Notes + ----- + The multiplication uses the recursion relationship for Hermite + polynomials in the form + + .. math:: + + xP_i(x) = (P_{i + 1}(x) + iP_{i - 1}(x))) + + Examples + -------- + >>> from numpy.polynomial.hermite_e import hermemulx + >>> hermemulx([1, 2, 3]) + array([2., 7., 2., 3.]) + + """ + # c is a trimmed copy + [c] = pu.as_series([c]) + # The zero series needs special treatment + if len(c) == 1 and c[0] == 0: + return c + + prd = np.empty(len(c) + 1, dtype=c.dtype) + prd[0] = c[0]*0 + prd[1] = c[0] + for i in range(1, len(c)): + prd[i + 1] = c[i] + prd[i - 1] += c[i]*i + return prd + + +def hermemul(c1, c2): + """ + Multiply one Hermite series by another. + + Returns the product of two Hermite series `c1` * `c2`. The arguments + are sequences of coefficients, from lowest order "term" to highest, + e.g., [1,2,3] represents the series ``P_0 + 2*P_1 + 3*P_2``. + + Parameters + ---------- + c1, c2 : array_like + 1-D arrays of Hermite series coefficients ordered from low to + high. + + Returns + ------- + out : ndarray + Of Hermite series coefficients representing their product. + + See Also + -------- + hermeadd, hermesub, hermemulx, hermediv, hermepow + + Notes + ----- + In general, the (polynomial) product of two C-series results in terms + that are not in the Hermite polynomial basis set. Thus, to express + the product as a Hermite series, it is necessary to "reproject" the + product onto said basis set, which may produce "unintuitive" (but + correct) results; see Examples section below. + + Examples + -------- + >>> from numpy.polynomial.hermite_e import hermemul + >>> hermemul([1, 2, 3], [0, 1, 2]) + array([14., 15., 28., 7., 6.]) + + """ + # s1, s2 are trimmed copies + [c1, c2] = pu.as_series([c1, c2]) + + if len(c1) > len(c2): + c = c2 + xs = c1 + else: + c = c1 + xs = c2 + + if len(c) == 1: + c0 = c[0]*xs + c1 = 0 + elif len(c) == 2: + c0 = c[0]*xs + c1 = c[1]*xs + else: + nd = len(c) + c0 = c[-2]*xs + c1 = c[-1]*xs + for i in range(3, len(c) + 1): + tmp = c0 + nd = nd - 1 + c0 = hermesub(c[-i]*xs, c1*(nd - 1)) + c1 = hermeadd(tmp, hermemulx(c1)) + return hermeadd(c0, hermemulx(c1)) + + +def hermediv(c1, c2): + """ + Divide one Hermite series by another. + + Returns the quotient-with-remainder of two Hermite series + `c1` / `c2`. The arguments are sequences of coefficients from lowest + order "term" to highest, e.g., [1,2,3] represents the series + ``P_0 + 2*P_1 + 3*P_2``. + + Parameters + ---------- + c1, c2 : array_like + 1-D arrays of Hermite series coefficients ordered from low to + high. + + Returns + ------- + [quo, rem] : ndarrays + Of Hermite series coefficients representing the quotient and + remainder. + + See Also + -------- + hermeadd, hermesub, hermemulx, hermemul, hermepow + + Notes + ----- + In general, the (polynomial) division of one Hermite series by another + results in quotient and remainder terms that are not in the Hermite + polynomial basis set. Thus, to express these results as a Hermite + series, it is necessary to "reproject" the results onto the Hermite + basis set, which may produce "unintuitive" (but correct) results; see + Examples section below. + + Examples + -------- + >>> from numpy.polynomial.hermite_e import hermediv + >>> hermediv([ 14., 15., 28., 7., 6.], [0, 1, 2]) + (array([1., 2., 3.]), array([0.])) + >>> hermediv([ 15., 17., 28., 7., 6.], [0, 1, 2]) + (array([1., 2., 3.]), array([1., 2.])) + + """ + return pu._div(hermemul, c1, c2) + + +def hermepow(c, pow, maxpower=16): + """Raise a Hermite series to a power. + + Returns the Hermite series `c` raised to the power `pow`. The + argument `c` is a sequence of coefficients ordered from low to high. + i.e., [1,2,3] is the series ``P_0 + 2*P_1 + 3*P_2.`` + + Parameters + ---------- + c : array_like + 1-D array of Hermite series coefficients ordered from low to + high. + pow : integer + Power to which the series will be raised + maxpower : integer, optional + Maximum power allowed. This is mainly to limit growth of the series + to unmanageable size. Default is 16 + + Returns + ------- + coef : ndarray + Hermite series of power. + + See Also + -------- + hermeadd, hermesub, hermemulx, hermemul, hermediv + + Examples + -------- + >>> from numpy.polynomial.hermite_e import hermepow + >>> hermepow([1, 2, 3], 2) + array([23., 28., 46., 12., 9.]) + + """ + return pu._pow(hermemul, c, pow, maxpower) + + +def hermeder(c, m=1, scl=1, axis=0): + """ + Differentiate a Hermite_e series. + + Returns the series coefficients `c` differentiated `m` times along + `axis`. At each iteration the result is multiplied by `scl` (the + scaling factor is for use in a linear change of variable). The argument + `c` is an array of coefficients from low to high degree along each + axis, e.g., [1,2,3] represents the series ``1*He_0 + 2*He_1 + 3*He_2`` + while [[1,2],[1,2]] represents ``1*He_0(x)*He_0(y) + 1*He_1(x)*He_0(y) + + 2*He_0(x)*He_1(y) + 2*He_1(x)*He_1(y)`` if axis=0 is ``x`` and axis=1 + is ``y``. + + Parameters + ---------- + c : array_like + Array of Hermite_e series coefficients. If `c` is multidimensional + the different axis correspond to different variables with the + degree in each axis given by the corresponding index. + m : int, optional + Number of derivatives taken, must be non-negative. (Default: 1) + scl : scalar, optional + Each differentiation is multiplied by `scl`. The end result is + multiplication by ``scl**m``. This is for use in a linear change of + variable. (Default: 1) + axis : int, optional + Axis over which the derivative is taken. (Default: 0). + + .. versionadded:: 1.7.0 + + Returns + ------- + der : ndarray + Hermite series of the derivative. + + See Also + -------- + hermeint + + Notes + ----- + In general, the result of differentiating a Hermite series does not + resemble the same operation on a power series. Thus the result of this + function may be "unintuitive," albeit correct; see Examples section + below. + + Examples + -------- + >>> from numpy.polynomial.hermite_e import hermeder + >>> hermeder([ 1., 1., 1., 1.]) + array([1., 2., 3.]) + >>> hermeder([-0.25, 1., 1./2., 1./3., 1./4 ], m=2) + array([1., 2., 3.]) + + """ + c = np.array(c, ndmin=1, copy=True) + if c.dtype.char in '?bBhHiIlLqQpP': + c = c.astype(np.double) + cnt = pu._deprecate_as_int(m, "the order of derivation") + iaxis = pu._deprecate_as_int(axis, "the axis") + if cnt < 0: + raise ValueError("The order of derivation must be non-negative") + iaxis = normalize_axis_index(iaxis, c.ndim) + + if cnt == 0: + return c + + c = np.moveaxis(c, iaxis, 0) + n = len(c) + if cnt >= n: + return c[:1]*0 + else: + for i in range(cnt): + n = n - 1 + c *= scl + der = np.empty((n,) + c.shape[1:], dtype=c.dtype) + for j in range(n, 0, -1): + der[j - 1] = j*c[j] + c = der + c = np.moveaxis(c, 0, iaxis) + return c + + +def hermeint(c, m=1, k=[], lbnd=0, scl=1, axis=0): + """ + Integrate a Hermite_e series. + + Returns the Hermite_e series coefficients `c` integrated `m` times from + `lbnd` along `axis`. At each iteration the resulting series is + **multiplied** by `scl` and an integration constant, `k`, is added. + The scaling factor is for use in a linear change of variable. ("Buyer + beware": note that, depending on what one is doing, one may want `scl` + to be the reciprocal of what one might expect; for more information, + see the Notes section below.) The argument `c` is an array of + coefficients from low to high degree along each axis, e.g., [1,2,3] + represents the series ``H_0 + 2*H_1 + 3*H_2`` while [[1,2],[1,2]] + represents ``1*H_0(x)*H_0(y) + 1*H_1(x)*H_0(y) + 2*H_0(x)*H_1(y) + + 2*H_1(x)*H_1(y)`` if axis=0 is ``x`` and axis=1 is ``y``. + + Parameters + ---------- + c : array_like + Array of Hermite_e series coefficients. If c is multidimensional + the different axis correspond to different variables with the + degree in each axis given by the corresponding index. + m : int, optional + Order of integration, must be positive. (Default: 1) + k : {[], list, scalar}, optional + Integration constant(s). The value of the first integral at + ``lbnd`` is the first value in the list, the value of the second + integral at ``lbnd`` is the second value, etc. If ``k == []`` (the + default), all constants are set to zero. If ``m == 1``, a single + scalar can be given instead of a list. + lbnd : scalar, optional + The lower bound of the integral. (Default: 0) + scl : scalar, optional + Following each integration the result is *multiplied* by `scl` + before the integration constant is added. (Default: 1) + axis : int, optional + Axis over which the integral is taken. (Default: 0). + + .. versionadded:: 1.7.0 + + Returns + ------- + S : ndarray + Hermite_e series coefficients of the integral. + + Raises + ------ + ValueError + If ``m < 0``, ``len(k) > m``, ``np.ndim(lbnd) != 0``, or + ``np.ndim(scl) != 0``. + + See Also + -------- + hermeder + + Notes + ----- + Note that the result of each integration is *multiplied* by `scl`. + Why is this important to note? Say one is making a linear change of + variable :math:`u = ax + b` in an integral relative to `x`. Then + :math:`dx = du/a`, so one will need to set `scl` equal to + :math:`1/a` - perhaps not what one would have first thought. + + Also note that, in general, the result of integrating a C-series needs + to be "reprojected" onto the C-series basis set. Thus, typically, + the result of this function is "unintuitive," albeit correct; see + Examples section below. + + Examples + -------- + >>> from numpy.polynomial.hermite_e import hermeint + >>> hermeint([1, 2, 3]) # integrate once, value 0 at 0. + array([1., 1., 1., 1.]) + >>> hermeint([1, 2, 3], m=2) # integrate twice, value & deriv 0 at 0 + array([-0.25 , 1. , 0.5 , 0.33333333, 0.25 ]) # may vary + >>> hermeint([1, 2, 3], k=1) # integrate once, value 1 at 0. + array([2., 1., 1., 1.]) + >>> hermeint([1, 2, 3], lbnd=-1) # integrate once, value 0 at -1 + array([-1., 1., 1., 1.]) + >>> hermeint([1, 2, 3], m=2, k=[1, 2], lbnd=-1) + array([ 1.83333333, 0. , 0.5 , 0.33333333, 0.25 ]) # may vary + + """ + c = np.array(c, ndmin=1, copy=True) + if c.dtype.char in '?bBhHiIlLqQpP': + c = c.astype(np.double) + if not np.iterable(k): + k = [k] + cnt = pu._deprecate_as_int(m, "the order of integration") + iaxis = pu._deprecate_as_int(axis, "the axis") + if cnt < 0: + raise ValueError("The order of integration must be non-negative") + if len(k) > cnt: + raise ValueError("Too many integration constants") + if np.ndim(lbnd) != 0: + raise ValueError("lbnd must be a scalar.") + if np.ndim(scl) != 0: + raise ValueError("scl must be a scalar.") + iaxis = normalize_axis_index(iaxis, c.ndim) + + if cnt == 0: + return c + + c = np.moveaxis(c, iaxis, 0) + k = list(k) + [0]*(cnt - len(k)) + for i in range(cnt): + n = len(c) + c *= scl + if n == 1 and np.all(c[0] == 0): + c[0] += k[i] + else: + tmp = np.empty((n + 1,) + c.shape[1:], dtype=c.dtype) + tmp[0] = c[0]*0 + tmp[1] = c[0] + for j in range(1, n): + tmp[j + 1] = c[j]/(j + 1) + tmp[0] += k[i] - hermeval(lbnd, tmp) + c = tmp + c = np.moveaxis(c, 0, iaxis) + return c + + +def hermeval(x, c, tensor=True): + """ + Evaluate an HermiteE series at points x. + + If `c` is of length `n + 1`, this function returns the value: + + .. math:: p(x) = c_0 * He_0(x) + c_1 * He_1(x) + ... + c_n * He_n(x) + + The parameter `x` is converted to an array only if it is a tuple or a + list, otherwise it is treated as a scalar. In either case, either `x` + or its elements must support multiplication and addition both with + themselves and with the elements of `c`. + + If `c` is a 1-D array, then `p(x)` will have the same shape as `x`. If + `c` is multidimensional, then the shape of the result depends on the + value of `tensor`. If `tensor` is true the shape will be c.shape[1:] + + x.shape. If `tensor` is false the shape will be c.shape[1:]. Note that + scalars have shape (,). + + Trailing zeros in the coefficients will be used in the evaluation, so + they should be avoided if efficiency is a concern. + + Parameters + ---------- + x : array_like, compatible object + If `x` is a list or tuple, it is converted to an ndarray, otherwise + it is left unchanged and treated as a scalar. In either case, `x` + or its elements must support addition and multiplication with + with themselves and with the elements of `c`. + c : array_like + Array of coefficients ordered so that the coefficients for terms of + degree n are contained in c[n]. If `c` is multidimensional the + remaining indices enumerate multiple polynomials. In the two + dimensional case the coefficients may be thought of as stored in + the columns of `c`. + tensor : boolean, optional + If True, the shape of the coefficient array is extended with ones + on the right, one for each dimension of `x`. Scalars have dimension 0 + for this action. The result is that every column of coefficients in + `c` is evaluated for every element of `x`. If False, `x` is broadcast + over the columns of `c` for the evaluation. This keyword is useful + when `c` is multidimensional. The default value is True. + + .. versionadded:: 1.7.0 + + Returns + ------- + values : ndarray, algebra_like + The shape of the return value is described above. + + See Also + -------- + hermeval2d, hermegrid2d, hermeval3d, hermegrid3d + + Notes + ----- + The evaluation uses Clenshaw recursion, aka synthetic division. + + Examples + -------- + >>> from numpy.polynomial.hermite_e import hermeval + >>> coef = [1,2,3] + >>> hermeval(1, coef) + 3.0 + >>> hermeval([[1,2],[3,4]], coef) + array([[ 3., 14.], + [31., 54.]]) + + """ + c = np.array(c, ndmin=1, copy=False) + if c.dtype.char in '?bBhHiIlLqQpP': + c = c.astype(np.double) + if isinstance(x, (tuple, list)): + x = np.asarray(x) + if isinstance(x, np.ndarray) and tensor: + c = c.reshape(c.shape + (1,)*x.ndim) + + if len(c) == 1: + c0 = c[0] + c1 = 0 + elif len(c) == 2: + c0 = c[0] + c1 = c[1] + else: + nd = len(c) + c0 = c[-2] + c1 = c[-1] + for i in range(3, len(c) + 1): + tmp = c0 + nd = nd - 1 + c0 = c[-i] - c1*(nd - 1) + c1 = tmp + c1*x + return c0 + c1*x + + +def hermeval2d(x, y, c): + """ + Evaluate a 2-D HermiteE series at points (x, y). + + This function returns the values: + + .. math:: p(x,y) = \\sum_{i,j} c_{i,j} * He_i(x) * He_j(y) + + The parameters `x` and `y` are converted to arrays only if they are + tuples or a lists, otherwise they are treated as a scalars and they + must have the same shape after conversion. In either case, either `x` + and `y` or their elements must support multiplication and addition both + with themselves and with the elements of `c`. + + If `c` is a 1-D array a one is implicitly appended to its shape to make + it 2-D. The shape of the result will be c.shape[2:] + x.shape. + + Parameters + ---------- + x, y : array_like, compatible objects + The two dimensional series is evaluated at the points `(x, y)`, + where `x` and `y` must have the same shape. If `x` or `y` is a list + or tuple, it is first converted to an ndarray, otherwise it is left + unchanged and if it isn't an ndarray it is treated as a scalar. + c : array_like + Array of coefficients ordered so that the coefficient of the term + of multi-degree i,j is contained in ``c[i,j]``. If `c` has + dimension greater than two the remaining indices enumerate multiple + sets of coefficients. + + Returns + ------- + values : ndarray, compatible object + The values of the two dimensional polynomial at points formed with + pairs of corresponding values from `x` and `y`. + + See Also + -------- + hermeval, hermegrid2d, hermeval3d, hermegrid3d + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + return pu._valnd(hermeval, c, x, y) + + +def hermegrid2d(x, y, c): + """ + Evaluate a 2-D HermiteE series on the Cartesian product of x and y. + + This function returns the values: + + .. math:: p(a,b) = \\sum_{i,j} c_{i,j} * H_i(a) * H_j(b) + + where the points `(a, b)` consist of all pairs formed by taking + `a` from `x` and `b` from `y`. The resulting points form a grid with + `x` in the first dimension and `y` in the second. + + The parameters `x` and `y` are converted to arrays only if they are + tuples or a lists, otherwise they are treated as a scalars. In either + case, either `x` and `y` or their elements must support multiplication + and addition both with themselves and with the elements of `c`. + + If `c` has fewer than two dimensions, ones are implicitly appended to + its shape to make it 2-D. The shape of the result will be c.shape[2:] + + x.shape. + + Parameters + ---------- + x, y : array_like, compatible objects + The two dimensional series is evaluated at the points in the + Cartesian product of `x` and `y`. If `x` or `y` is a list or + tuple, it is first converted to an ndarray, otherwise it is left + unchanged and, if it isn't an ndarray, it is treated as a scalar. + c : array_like + Array of coefficients ordered so that the coefficients for terms of + degree i,j are contained in ``c[i,j]``. If `c` has dimension + greater than two the remaining indices enumerate multiple sets of + coefficients. + + Returns + ------- + values : ndarray, compatible object + The values of the two dimensional polynomial at points in the Cartesian + product of `x` and `y`. + + See Also + -------- + hermeval, hermeval2d, hermeval3d, hermegrid3d + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + return pu._gridnd(hermeval, c, x, y) + + +def hermeval3d(x, y, z, c): + """ + Evaluate a 3-D Hermite_e series at points (x, y, z). + + This function returns the values: + + .. math:: p(x,y,z) = \\sum_{i,j,k} c_{i,j,k} * He_i(x) * He_j(y) * He_k(z) + + The parameters `x`, `y`, and `z` are converted to arrays only if + they are tuples or a lists, otherwise they are treated as a scalars and + they must have the same shape after conversion. In either case, either + `x`, `y`, and `z` or their elements must support multiplication and + addition both with themselves and with the elements of `c`. + + If `c` has fewer than 3 dimensions, ones are implicitly appended to its + shape to make it 3-D. The shape of the result will be c.shape[3:] + + x.shape. + + Parameters + ---------- + x, y, z : array_like, compatible object + The three dimensional series is evaluated at the points + `(x, y, z)`, where `x`, `y`, and `z` must have the same shape. If + any of `x`, `y`, or `z` is a list or tuple, it is first converted + to an ndarray, otherwise it is left unchanged and if it isn't an + ndarray it is treated as a scalar. + c : array_like + Array of coefficients ordered so that the coefficient of the term of + multi-degree i,j,k is contained in ``c[i,j,k]``. If `c` has dimension + greater than 3 the remaining indices enumerate multiple sets of + coefficients. + + Returns + ------- + values : ndarray, compatible object + The values of the multidimensional polynomial on points formed with + triples of corresponding values from `x`, `y`, and `z`. + + See Also + -------- + hermeval, hermeval2d, hermegrid2d, hermegrid3d + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + return pu._valnd(hermeval, c, x, y, z) + + +def hermegrid3d(x, y, z, c): + """ + Evaluate a 3-D HermiteE series on the Cartesian product of x, y, and z. + + This function returns the values: + + .. math:: p(a,b,c) = \\sum_{i,j,k} c_{i,j,k} * He_i(a) * He_j(b) * He_k(c) + + where the points `(a, b, c)` consist of all triples formed by taking + `a` from `x`, `b` from `y`, and `c` from `z`. The resulting points form + a grid with `x` in the first dimension, `y` in the second, and `z` in + the third. + + The parameters `x`, `y`, and `z` are converted to arrays only if they + are tuples or a lists, otherwise they are treated as a scalars. In + either case, either `x`, `y`, and `z` or their elements must support + multiplication and addition both with themselves and with the elements + of `c`. + + If `c` has fewer than three dimensions, ones are implicitly appended to + its shape to make it 3-D. The shape of the result will be c.shape[3:] + + x.shape + y.shape + z.shape. + + Parameters + ---------- + x, y, z : array_like, compatible objects + The three dimensional series is evaluated at the points in the + Cartesian product of `x`, `y`, and `z`. If `x`,`y`, or `z` is a + list or tuple, it is first converted to an ndarray, otherwise it is + left unchanged and, if it isn't an ndarray, it is treated as a + scalar. + c : array_like + Array of coefficients ordered so that the coefficients for terms of + degree i,j are contained in ``c[i,j]``. If `c` has dimension + greater than two the remaining indices enumerate multiple sets of + coefficients. + + Returns + ------- + values : ndarray, compatible object + The values of the two dimensional polynomial at points in the Cartesian + product of `x` and `y`. + + See Also + -------- + hermeval, hermeval2d, hermegrid2d, hermeval3d + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + return pu._gridnd(hermeval, c, x, y, z) + + +def hermevander(x, deg): + """Pseudo-Vandermonde matrix of given degree. + + Returns the pseudo-Vandermonde matrix of degree `deg` and sample points + `x`. The pseudo-Vandermonde matrix is defined by + + .. math:: V[..., i] = He_i(x), + + where `0 <= i <= deg`. The leading indices of `V` index the elements of + `x` and the last index is the degree of the HermiteE polynomial. + + If `c` is a 1-D array of coefficients of length `n + 1` and `V` is the + array ``V = hermevander(x, n)``, then ``np.dot(V, c)`` and + ``hermeval(x, c)`` are the same up to roundoff. This equivalence is + useful both for least squares fitting and for the evaluation of a large + number of HermiteE series of the same degree and sample points. + + Parameters + ---------- + x : array_like + Array of points. The dtype is converted to float64 or complex128 + depending on whether any of the elements are complex. If `x` is + scalar it is converted to a 1-D array. + deg : int + Degree of the resulting matrix. + + Returns + ------- + vander : ndarray + The pseudo-Vandermonde matrix. The shape of the returned matrix is + ``x.shape + (deg + 1,)``, where The last index is the degree of the + corresponding HermiteE polynomial. The dtype will be the same as + the converted `x`. + + Examples + -------- + >>> from numpy.polynomial.hermite_e import hermevander + >>> x = np.array([-1, 0, 1]) + >>> hermevander(x, 3) + array([[ 1., -1., 0., 2.], + [ 1., 0., -1., -0.], + [ 1., 1., 0., -2.]]) + + """ + ideg = pu._deprecate_as_int(deg, "deg") + if ideg < 0: + raise ValueError("deg must be non-negative") + + x = np.array(x, copy=False, ndmin=1) + 0.0 + dims = (ideg + 1,) + x.shape + dtyp = x.dtype + v = np.empty(dims, dtype=dtyp) + v[0] = x*0 + 1 + if ideg > 0: + v[1] = x + for i in range(2, ideg + 1): + v[i] = (v[i-1]*x - v[i-2]*(i - 1)) + return np.moveaxis(v, 0, -1) + + +def hermevander2d(x, y, deg): + """Pseudo-Vandermonde matrix of given degrees. + + Returns the pseudo-Vandermonde matrix of degrees `deg` and sample + points `(x, y)`. The pseudo-Vandermonde matrix is defined by + + .. math:: V[..., (deg[1] + 1)*i + j] = He_i(x) * He_j(y), + + where `0 <= i <= deg[0]` and `0 <= j <= deg[1]`. The leading indices of + `V` index the points `(x, y)` and the last index encodes the degrees of + the HermiteE polynomials. + + If ``V = hermevander2d(x, y, [xdeg, ydeg])``, then the columns of `V` + correspond to the elements of a 2-D coefficient array `c` of shape + (xdeg + 1, ydeg + 1) in the order + + .. math:: c_{00}, c_{01}, c_{02} ... , c_{10}, c_{11}, c_{12} ... + + and ``np.dot(V, c.flat)`` and ``hermeval2d(x, y, c)`` will be the same + up to roundoff. This equivalence is useful both for least squares + fitting and for the evaluation of a large number of 2-D HermiteE + series of the same degrees and sample points. + + Parameters + ---------- + x, y : array_like + Arrays of point coordinates, all of the same shape. The dtypes + will be converted to either float64 or complex128 depending on + whether any of the elements are complex. Scalars are converted to + 1-D arrays. + deg : list of ints + List of maximum degrees of the form [x_deg, y_deg]. + + Returns + ------- + vander2d : ndarray + The shape of the returned matrix is ``x.shape + (order,)``, where + :math:`order = (deg[0]+1)*(deg[1]+1)`. The dtype will be the same + as the converted `x` and `y`. + + See Also + -------- + hermevander, hermevander3d, hermeval2d, hermeval3d + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + return pu._vander_nd_flat((hermevander, hermevander), (x, y), deg) + + +def hermevander3d(x, y, z, deg): + """Pseudo-Vandermonde matrix of given degrees. + + Returns the pseudo-Vandermonde matrix of degrees `deg` and sample + points `(x, y, z)`. If `l, m, n` are the given degrees in `x, y, z`, + then Hehe pseudo-Vandermonde matrix is defined by + + .. math:: V[..., (m+1)(n+1)i + (n+1)j + k] = He_i(x)*He_j(y)*He_k(z), + + where `0 <= i <= l`, `0 <= j <= m`, and `0 <= j <= n`. The leading + indices of `V` index the points `(x, y, z)` and the last index encodes + the degrees of the HermiteE polynomials. + + If ``V = hermevander3d(x, y, z, [xdeg, ydeg, zdeg])``, then the columns + of `V` correspond to the elements of a 3-D coefficient array `c` of + shape (xdeg + 1, ydeg + 1, zdeg + 1) in the order + + .. math:: c_{000}, c_{001}, c_{002},... , c_{010}, c_{011}, c_{012},... + + and ``np.dot(V, c.flat)`` and ``hermeval3d(x, y, z, c)`` will be the + same up to roundoff. This equivalence is useful both for least squares + fitting and for the evaluation of a large number of 3-D HermiteE + series of the same degrees and sample points. + + Parameters + ---------- + x, y, z : array_like + Arrays of point coordinates, all of the same shape. The dtypes will + be converted to either float64 or complex128 depending on whether + any of the elements are complex. Scalars are converted to 1-D + arrays. + deg : list of ints + List of maximum degrees of the form [x_deg, y_deg, z_deg]. + + Returns + ------- + vander3d : ndarray + The shape of the returned matrix is ``x.shape + (order,)``, where + :math:`order = (deg[0]+1)*(deg[1]+1)*(deg[2]+1)`. The dtype will + be the same as the converted `x`, `y`, and `z`. + + See Also + -------- + hermevander, hermevander3d, hermeval2d, hermeval3d + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + return pu._vander_nd_flat((hermevander, hermevander, hermevander), (x, y, z), deg) + + +def hermefit(x, y, deg, rcond=None, full=False, w=None): + """ + Least squares fit of Hermite series to data. + + Return the coefficients of a HermiteE series of degree `deg` that is + the least squares fit to the data values `y` given at points `x`. If + `y` is 1-D the returned coefficients will also be 1-D. If `y` is 2-D + multiple fits are done, one for each column of `y`, and the resulting + coefficients are stored in the corresponding columns of a 2-D return. + The fitted polynomial(s) are in the form + + .. math:: p(x) = c_0 + c_1 * He_1(x) + ... + c_n * He_n(x), + + where `n` is `deg`. + + Parameters + ---------- + x : array_like, shape (M,) + x-coordinates of the M sample points ``(x[i], y[i])``. + y : array_like, shape (M,) or (M, K) + y-coordinates of the sample points. Several data sets of sample + points sharing the same x-coordinates can be fitted at once by + passing in a 2D-array that contains one dataset per column. + deg : int or 1-D array_like + Degree(s) of the fitting polynomials. If `deg` is a single integer + all terms up to and including the `deg`'th term are included in the + fit. For NumPy versions >= 1.11.0 a list of integers specifying the + degrees of the terms to include may be used instead. + rcond : float, optional + Relative condition number of the fit. Singular values smaller than + this relative to the largest singular value will be ignored. The + default value is len(x)*eps, where eps is the relative precision of + the float type, about 2e-16 in most cases. + full : bool, optional + Switch determining nature of return value. When it is False (the + default) just the coefficients are returned, when True diagnostic + information from the singular value decomposition is also returned. + w : array_like, shape (`M`,), optional + Weights. If not None, the weight ``w[i]`` applies to the unsquared + residual ``y[i] - y_hat[i]`` at ``x[i]``. Ideally the weights are + chosen so that the errors of the products ``w[i]*y[i]`` all have the + same variance. When using inverse-variance weighting, use + ``w[i] = 1/sigma(y[i])``. The default value is None. + + Returns + ------- + coef : ndarray, shape (M,) or (M, K) + Hermite coefficients ordered from low to high. If `y` was 2-D, + the coefficients for the data in column k of `y` are in column + `k`. + + [residuals, rank, singular_values, rcond] : list + These values are only returned if ``full == True`` + + - residuals -- sum of squared residuals of the least squares fit + - rank -- the numerical rank of the scaled Vandermonde matrix + - singular_values -- singular values of the scaled Vandermonde matrix + - rcond -- value of `rcond`. + + For more details, see `numpy.linalg.lstsq`. + + Warns + ----- + RankWarning + The rank of the coefficient matrix in the least-squares fit is + deficient. The warning is only raised if ``full = False``. The + warnings can be turned off by + + >>> import warnings + >>> warnings.simplefilter('ignore', np.RankWarning) + + See Also + -------- + numpy.polynomial.chebyshev.chebfit + numpy.polynomial.legendre.legfit + numpy.polynomial.polynomial.polyfit + numpy.polynomial.hermite.hermfit + numpy.polynomial.laguerre.lagfit + hermeval : Evaluates a Hermite series. + hermevander : pseudo Vandermonde matrix of Hermite series. + hermeweight : HermiteE weight function. + numpy.linalg.lstsq : Computes a least-squares fit from the matrix. + scipy.interpolate.UnivariateSpline : Computes spline fits. + + Notes + ----- + The solution is the coefficients of the HermiteE series `p` that + minimizes the sum of the weighted squared errors + + .. math:: E = \\sum_j w_j^2 * |y_j - p(x_j)|^2, + + where the :math:`w_j` are the weights. This problem is solved by + setting up the (typically) overdetermined matrix equation + + .. math:: V(x) * c = w * y, + + where `V` is the pseudo Vandermonde matrix of `x`, the elements of `c` + are the coefficients to be solved for, and the elements of `y` are the + observed values. This equation is then solved using the singular value + decomposition of `V`. + + If some of the singular values of `V` are so small that they are + neglected, then a `RankWarning` will be issued. This means that the + coefficient values may be poorly determined. Using a lower order fit + will usually get rid of the warning. The `rcond` parameter can also be + set to a value smaller than its default, but the resulting fit may be + spurious and have large contributions from roundoff error. + + Fits using HermiteE series are probably most useful when the data can + be approximated by ``sqrt(w(x)) * p(x)``, where `w(x)` is the HermiteE + weight. In that case the weight ``sqrt(w(x[i]))`` should be used + together with data values ``y[i]/sqrt(w(x[i]))``. The weight function is + available as `hermeweight`. + + References + ---------- + .. [1] Wikipedia, "Curve fitting", + https://en.wikipedia.org/wiki/Curve_fitting + + Examples + -------- + >>> from numpy.polynomial.hermite_e import hermefit, hermeval + >>> x = np.linspace(-10, 10) + >>> np.random.seed(123) + >>> err = np.random.randn(len(x))/10 + >>> y = hermeval(x, [1, 2, 3]) + err + >>> hermefit(x, y, 2) + array([ 1.01690445, 1.99951418, 2.99948696]) # may vary + + """ + return pu._fit(hermevander, x, y, deg, rcond, full, w) + + +def hermecompanion(c): + """ + Return the scaled companion matrix of c. + + The basis polynomials are scaled so that the companion matrix is + symmetric when `c` is an HermiteE basis polynomial. This provides + better eigenvalue estimates than the unscaled case and for basis + polynomials the eigenvalues are guaranteed to be real if + `numpy.linalg.eigvalsh` is used to obtain them. + + Parameters + ---------- + c : array_like + 1-D array of HermiteE series coefficients ordered from low to high + degree. + + Returns + ------- + mat : ndarray + Scaled companion matrix of dimensions (deg, deg). + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + # c is a trimmed copy + [c] = pu.as_series([c]) + if len(c) < 2: + raise ValueError('Series must have maximum degree of at least 1.') + if len(c) == 2: + return np.array([[-c[0]/c[1]]]) + + n = len(c) - 1 + mat = np.zeros((n, n), dtype=c.dtype) + scl = np.hstack((1., 1./np.sqrt(np.arange(n - 1, 0, -1)))) + scl = np.multiply.accumulate(scl)[::-1] + top = mat.reshape(-1)[1::n+1] + bot = mat.reshape(-1)[n::n+1] + top[...] = np.sqrt(np.arange(1, n)) + bot[...] = top + mat[:, -1] -= scl*c[:-1]/c[-1] + return mat + + +def hermeroots(c): + """ + Compute the roots of a HermiteE series. + + Return the roots (a.k.a. "zeros") of the polynomial + + .. math:: p(x) = \\sum_i c[i] * He_i(x). + + Parameters + ---------- + c : 1-D array_like + 1-D array of coefficients. + + Returns + ------- + out : ndarray + Array of the roots of the series. If all the roots are real, + then `out` is also real, otherwise it is complex. + + See Also + -------- + numpy.polynomial.polynomial.polyroots + numpy.polynomial.legendre.legroots + numpy.polynomial.laguerre.lagroots + numpy.polynomial.hermite.hermroots + numpy.polynomial.chebyshev.chebroots + + Notes + ----- + The root estimates are obtained as the eigenvalues of the companion + matrix, Roots far from the origin of the complex plane may have large + errors due to the numerical instability of the series for such + values. Roots with multiplicity greater than 1 will also show larger + errors as the value of the series near such points is relatively + insensitive to errors in the roots. Isolated roots near the origin can + be improved by a few iterations of Newton's method. + + The HermiteE series basis polynomials aren't powers of `x` so the + results of this function may seem unintuitive. + + Examples + -------- + >>> from numpy.polynomial.hermite_e import hermeroots, hermefromroots + >>> coef = hermefromroots([-1, 0, 1]) + >>> coef + array([0., 2., 0., 1.]) + >>> hermeroots(coef) + array([-1., 0., 1.]) # may vary + + """ + # c is a trimmed copy + [c] = pu.as_series([c]) + if len(c) <= 1: + return np.array([], dtype=c.dtype) + if len(c) == 2: + return np.array([-c[0]/c[1]]) + + # rotated companion matrix reduces error + m = hermecompanion(c)[::-1,::-1] + r = la.eigvals(m) + r.sort() + return r + + +def _normed_hermite_e_n(x, n): + """ + Evaluate a normalized HermiteE polynomial. + + Compute the value of the normalized HermiteE polynomial of degree ``n`` + at the points ``x``. + + + Parameters + ---------- + x : ndarray of double. + Points at which to evaluate the function + n : int + Degree of the normalized HermiteE function to be evaluated. + + Returns + ------- + values : ndarray + The shape of the return value is described above. + + Notes + ----- + .. versionadded:: 1.10.0 + + This function is needed for finding the Gauss points and integration + weights for high degrees. The values of the standard HermiteE functions + overflow when n >= 207. + + """ + if n == 0: + return np.full(x.shape, 1/np.sqrt(np.sqrt(2*np.pi))) + + c0 = 0. + c1 = 1./np.sqrt(np.sqrt(2*np.pi)) + nd = float(n) + for i in range(n - 1): + tmp = c0 + c0 = -c1*np.sqrt((nd - 1.)/nd) + c1 = tmp + c1*x*np.sqrt(1./nd) + nd = nd - 1.0 + return c0 + c1*x + + +def hermegauss(deg): + """ + Gauss-HermiteE quadrature. + + Computes the sample points and weights for Gauss-HermiteE quadrature. + These sample points and weights will correctly integrate polynomials of + degree :math:`2*deg - 1` or less over the interval :math:`[-\\inf, \\inf]` + with the weight function :math:`f(x) = \\exp(-x^2/2)`. + + Parameters + ---------- + deg : int + Number of sample points and weights. It must be >= 1. + + Returns + ------- + x : ndarray + 1-D ndarray containing the sample points. + y : ndarray + 1-D ndarray containing the weights. + + Notes + ----- + + .. versionadded:: 1.7.0 + + The results have only been tested up to degree 100, higher degrees may + be problematic. The weights are determined by using the fact that + + .. math:: w_k = c / (He'_n(x_k) * He_{n-1}(x_k)) + + where :math:`c` is a constant independent of :math:`k` and :math:`x_k` + is the k'th root of :math:`He_n`, and then scaling the results to get + the right value when integrating 1. + + """ + ideg = pu._deprecate_as_int(deg, "deg") + if ideg <= 0: + raise ValueError("deg must be a positive integer") + + # first approximation of roots. We use the fact that the companion + # matrix is symmetric in this case in order to obtain better zeros. + c = np.array([0]*deg + [1]) + m = hermecompanion(c) + x = la.eigvalsh(m) + + # improve roots by one application of Newton + dy = _normed_hermite_e_n(x, ideg) + df = _normed_hermite_e_n(x, ideg - 1) * np.sqrt(ideg) + x -= dy/df + + # compute the weights. We scale the factor to avoid possible numerical + # overflow. + fm = _normed_hermite_e_n(x, ideg - 1) + fm /= np.abs(fm).max() + w = 1/(fm * fm) + + # for Hermite_e we can also symmetrize + w = (w + w[::-1])/2 + x = (x - x[::-1])/2 + + # scale w to get the right value + w *= np.sqrt(2*np.pi) / w.sum() + + return x, w + + +def hermeweight(x): + """Weight function of the Hermite_e polynomials. + + The weight function is :math:`\\exp(-x^2/2)` and the interval of + integration is :math:`[-\\inf, \\inf]`. the HermiteE polynomials are + orthogonal, but not normalized, with respect to this weight function. + + Parameters + ---------- + x : array_like + Values at which the weight function will be computed. + + Returns + ------- + w : ndarray + The weight function at `x`. + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + w = np.exp(-.5*x**2) + return w + + +# +# HermiteE series class +# + +class HermiteE(ABCPolyBase): + """An HermiteE series class. + + The HermiteE class provides the standard Python numerical methods + '+', '-', '*', '//', '%', 'divmod', '**', and '()' as well as the + attributes and methods listed in the `ABCPolyBase` documentation. + + Parameters + ---------- + coef : array_like + HermiteE coefficients in order of increasing degree, i.e, + ``(1, 2, 3)`` gives ``1*He_0(x) + 2*He_1(X) + 3*He_2(x)``. + domain : (2,) array_like, optional + Domain to use. The interval ``[domain[0], domain[1]]`` is mapped + to the interval ``[window[0], window[1]]`` by shifting and scaling. + The default value is [-1, 1]. + window : (2,) array_like, optional + Window, see `domain` for its use. The default value is [-1, 1]. + + .. versionadded:: 1.6.0 + symbol : str, optional + Symbol used to represent the independent variable in string + representations of the polynomial expression, e.g. for printing. + The symbol must be a valid Python identifier. Default value is 'x'. + + .. versionadded:: 1.24 + + """ + # Virtual Functions + _add = staticmethod(hermeadd) + _sub = staticmethod(hermesub) + _mul = staticmethod(hermemul) + _div = staticmethod(hermediv) + _pow = staticmethod(hermepow) + _val = staticmethod(hermeval) + _int = staticmethod(hermeint) + _der = staticmethod(hermeder) + _fit = staticmethod(hermefit) + _line = staticmethod(hermeline) + _roots = staticmethod(hermeroots) + _fromroots = staticmethod(hermefromroots) + + # Virtual properties + domain = np.array(hermedomain) + window = np.array(hermedomain) + basis_name = 'He' diff --git a/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/hermite_e.pyi b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/hermite_e.pyi new file mode 100644 index 0000000000000000000000000000000000000000..0b7152a253b654da2c069711a1bfdbd4e084cf6f --- /dev/null +++ b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/hermite_e.pyi @@ -0,0 +1,46 @@ +from typing import Any + +from numpy import ndarray, dtype, int_ +from numpy.polynomial._polybase import ABCPolyBase +from numpy.polynomial.polyutils import trimcoef + +__all__: list[str] + +hermetrim = trimcoef + +def poly2herme(pol): ... +def herme2poly(c): ... + +hermedomain: ndarray[Any, dtype[int_]] +hermezero: ndarray[Any, dtype[int_]] +hermeone: ndarray[Any, dtype[int_]] +hermex: ndarray[Any, dtype[int_]] + +def hermeline(off, scl): ... +def hermefromroots(roots): ... +def hermeadd(c1, c2): ... +def hermesub(c1, c2): ... +def hermemulx(c): ... +def hermemul(c1, c2): ... +def hermediv(c1, c2): ... +def hermepow(c, pow, maxpower=...): ... +def hermeder(c, m=..., scl=..., axis=...): ... +def hermeint(c, m=..., k = ..., lbnd=..., scl=..., axis=...): ... +def hermeval(x, c, tensor=...): ... +def hermeval2d(x, y, c): ... +def hermegrid2d(x, y, c): ... +def hermeval3d(x, y, z, c): ... +def hermegrid3d(x, y, z, c): ... +def hermevander(x, deg): ... +def hermevander2d(x, y, deg): ... +def hermevander3d(x, y, z, deg): ... +def hermefit(x, y, deg, rcond=..., full=..., w=...): ... +def hermecompanion(c): ... +def hermeroots(c): ... +def hermegauss(deg): ... +def hermeweight(x): ... + +class HermiteE(ABCPolyBase): + domain: Any + window: Any + basis_name: Any diff --git a/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/laguerre.py b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/laguerre.py new file mode 100644 index 0000000000000000000000000000000000000000..925d4898ec07673f221937fff1082711a9851df9 --- /dev/null +++ b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/laguerre.py @@ -0,0 +1,1651 @@ +""" +================================================== +Laguerre Series (:mod:`numpy.polynomial.laguerre`) +================================================== + +This module provides a number of objects (mostly functions) useful for +dealing with Laguerre series, including a `Laguerre` class that +encapsulates the usual arithmetic operations. (General information +on how this module represents and works with such polynomials is in the +docstring for its "parent" sub-package, `numpy.polynomial`). + +Classes +------- +.. autosummary:: + :toctree: generated/ + + Laguerre + +Constants +--------- +.. autosummary:: + :toctree: generated/ + + lagdomain + lagzero + lagone + lagx + +Arithmetic +---------- +.. autosummary:: + :toctree: generated/ + + lagadd + lagsub + lagmulx + lagmul + lagdiv + lagpow + lagval + lagval2d + lagval3d + laggrid2d + laggrid3d + +Calculus +-------- +.. autosummary:: + :toctree: generated/ + + lagder + lagint + +Misc Functions +-------------- +.. autosummary:: + :toctree: generated/ + + lagfromroots + lagroots + lagvander + lagvander2d + lagvander3d + laggauss + lagweight + lagcompanion + lagfit + lagtrim + lagline + lag2poly + poly2lag + +See also +-------- +`numpy.polynomial` + +""" +import numpy as np +import numpy.linalg as la +from numpy.core.multiarray import normalize_axis_index + +from . import polyutils as pu +from ._polybase import ABCPolyBase + +__all__ = [ + 'lagzero', 'lagone', 'lagx', 'lagdomain', 'lagline', 'lagadd', + 'lagsub', 'lagmulx', 'lagmul', 'lagdiv', 'lagpow', 'lagval', 'lagder', + 'lagint', 'lag2poly', 'poly2lag', 'lagfromroots', 'lagvander', + 'lagfit', 'lagtrim', 'lagroots', 'Laguerre', 'lagval2d', 'lagval3d', + 'laggrid2d', 'laggrid3d', 'lagvander2d', 'lagvander3d', 'lagcompanion', + 'laggauss', 'lagweight'] + +lagtrim = pu.trimcoef + + +def poly2lag(pol): + """ + poly2lag(pol) + + Convert a polynomial to a Laguerre series. + + Convert an array representing the coefficients of a polynomial (relative + to the "standard" basis) ordered from lowest degree to highest, to an + array of the coefficients of the equivalent Laguerre series, ordered + from lowest to highest degree. + + Parameters + ---------- + pol : array_like + 1-D array containing the polynomial coefficients + + Returns + ------- + c : ndarray + 1-D array containing the coefficients of the equivalent Laguerre + series. + + See Also + -------- + lag2poly + + Notes + ----- + The easy way to do conversions between polynomial basis sets + is to use the convert method of a class instance. + + Examples + -------- + >>> from numpy.polynomial.laguerre import poly2lag + >>> poly2lag(np.arange(4)) + array([ 23., -63., 58., -18.]) + + """ + [pol] = pu.as_series([pol]) + res = 0 + for p in pol[::-1]: + res = lagadd(lagmulx(res), p) + return res + + +def lag2poly(c): + """ + Convert a Laguerre series to a polynomial. + + Convert an array representing the coefficients of a Laguerre series, + ordered from lowest degree to highest, to an array of the coefficients + of the equivalent polynomial (relative to the "standard" basis) ordered + from lowest to highest degree. + + Parameters + ---------- + c : array_like + 1-D array containing the Laguerre series coefficients, ordered + from lowest order term to highest. + + Returns + ------- + pol : ndarray + 1-D array containing the coefficients of the equivalent polynomial + (relative to the "standard" basis) ordered from lowest order term + to highest. + + See Also + -------- + poly2lag + + Notes + ----- + The easy way to do conversions between polynomial basis sets + is to use the convert method of a class instance. + + Examples + -------- + >>> from numpy.polynomial.laguerre import lag2poly + >>> lag2poly([ 23., -63., 58., -18.]) + array([0., 1., 2., 3.]) + + """ + from .polynomial import polyadd, polysub, polymulx + + [c] = pu.as_series([c]) + n = len(c) + if n == 1: + return c + else: + c0 = c[-2] + c1 = c[-1] + # i is the current degree of c1 + for i in range(n - 1, 1, -1): + tmp = c0 + c0 = polysub(c[i - 2], (c1*(i - 1))/i) + c1 = polyadd(tmp, polysub((2*i - 1)*c1, polymulx(c1))/i) + return polyadd(c0, polysub(c1, polymulx(c1))) + +# +# These are constant arrays are of integer type so as to be compatible +# with the widest range of other types, such as Decimal. +# + +# Laguerre +lagdomain = np.array([0, 1]) + +# Laguerre coefficients representing zero. +lagzero = np.array([0]) + +# Laguerre coefficients representing one. +lagone = np.array([1]) + +# Laguerre coefficients representing the identity x. +lagx = np.array([1, -1]) + + +def lagline(off, scl): + """ + Laguerre series whose graph is a straight line. + + Parameters + ---------- + off, scl : scalars + The specified line is given by ``off + scl*x``. + + Returns + ------- + y : ndarray + This module's representation of the Laguerre series for + ``off + scl*x``. + + See Also + -------- + numpy.polynomial.polynomial.polyline + numpy.polynomial.chebyshev.chebline + numpy.polynomial.legendre.legline + numpy.polynomial.hermite.hermline + numpy.polynomial.hermite_e.hermeline + + Examples + -------- + >>> from numpy.polynomial.laguerre import lagline, lagval + >>> lagval(0,lagline(3, 2)) + 3.0 + >>> lagval(1,lagline(3, 2)) + 5.0 + + """ + if scl != 0: + return np.array([off + scl, -scl]) + else: + return np.array([off]) + + +def lagfromroots(roots): + """ + Generate a Laguerre series with given roots. + + The function returns the coefficients of the polynomial + + .. math:: p(x) = (x - r_0) * (x - r_1) * ... * (x - r_n), + + in Laguerre form, where the `r_n` are the roots specified in `roots`. + If a zero has multiplicity n, then it must appear in `roots` n times. + For instance, if 2 is a root of multiplicity three and 3 is a root of + multiplicity 2, then `roots` looks something like [2, 2, 2, 3, 3]. The + roots can appear in any order. + + If the returned coefficients are `c`, then + + .. math:: p(x) = c_0 + c_1 * L_1(x) + ... + c_n * L_n(x) + + The coefficient of the last term is not generally 1 for monic + polynomials in Laguerre form. + + Parameters + ---------- + roots : array_like + Sequence containing the roots. + + Returns + ------- + out : ndarray + 1-D array of coefficients. If all roots are real then `out` is a + real array, if some of the roots are complex, then `out` is complex + even if all the coefficients in the result are real (see Examples + below). + + See Also + -------- + numpy.polynomial.polynomial.polyfromroots + numpy.polynomial.legendre.legfromroots + numpy.polynomial.chebyshev.chebfromroots + numpy.polynomial.hermite.hermfromroots + numpy.polynomial.hermite_e.hermefromroots + + Examples + -------- + >>> from numpy.polynomial.laguerre import lagfromroots, lagval + >>> coef = lagfromroots((-1, 0, 1)) + >>> lagval((-1, 0, 1), coef) + array([0., 0., 0.]) + >>> coef = lagfromroots((-1j, 1j)) + >>> lagval((-1j, 1j), coef) + array([0.+0.j, 0.+0.j]) + + """ + return pu._fromroots(lagline, lagmul, roots) + + +def lagadd(c1, c2): + """ + Add one Laguerre series to another. + + Returns the sum of two Laguerre series `c1` + `c2`. The arguments + are sequences of coefficients ordered from lowest order term to + highest, i.e., [1,2,3] represents the series ``P_0 + 2*P_1 + 3*P_2``. + + Parameters + ---------- + c1, c2 : array_like + 1-D arrays of Laguerre series coefficients ordered from low to + high. + + Returns + ------- + out : ndarray + Array representing the Laguerre series of their sum. + + See Also + -------- + lagsub, lagmulx, lagmul, lagdiv, lagpow + + Notes + ----- + Unlike multiplication, division, etc., the sum of two Laguerre series + is a Laguerre series (without having to "reproject" the result onto + the basis set) so addition, just like that of "standard" polynomials, + is simply "component-wise." + + Examples + -------- + >>> from numpy.polynomial.laguerre import lagadd + >>> lagadd([1, 2, 3], [1, 2, 3, 4]) + array([2., 4., 6., 4.]) + + + """ + return pu._add(c1, c2) + + +def lagsub(c1, c2): + """ + Subtract one Laguerre series from another. + + Returns the difference of two Laguerre series `c1` - `c2`. The + sequences of coefficients are from lowest order term to highest, i.e., + [1,2,3] represents the series ``P_0 + 2*P_1 + 3*P_2``. + + Parameters + ---------- + c1, c2 : array_like + 1-D arrays of Laguerre series coefficients ordered from low to + high. + + Returns + ------- + out : ndarray + Of Laguerre series coefficients representing their difference. + + See Also + -------- + lagadd, lagmulx, lagmul, lagdiv, lagpow + + Notes + ----- + Unlike multiplication, division, etc., the difference of two Laguerre + series is a Laguerre series (without having to "reproject" the result + onto the basis set) so subtraction, just like that of "standard" + polynomials, is simply "component-wise." + + Examples + -------- + >>> from numpy.polynomial.laguerre import lagsub + >>> lagsub([1, 2, 3, 4], [1, 2, 3]) + array([0., 0., 0., 4.]) + + """ + return pu._sub(c1, c2) + + +def lagmulx(c): + """Multiply a Laguerre series by x. + + Multiply the Laguerre series `c` by x, where x is the independent + variable. + + + Parameters + ---------- + c : array_like + 1-D array of Laguerre series coefficients ordered from low to + high. + + Returns + ------- + out : ndarray + Array representing the result of the multiplication. + + See Also + -------- + lagadd, lagsub, lagmul, lagdiv, lagpow + + Notes + ----- + The multiplication uses the recursion relationship for Laguerre + polynomials in the form + + .. math:: + + xP_i(x) = (-(i + 1)*P_{i + 1}(x) + (2i + 1)P_{i}(x) - iP_{i - 1}(x)) + + Examples + -------- + >>> from numpy.polynomial.laguerre import lagmulx + >>> lagmulx([1, 2, 3]) + array([-1., -1., 11., -9.]) + + """ + # c is a trimmed copy + [c] = pu.as_series([c]) + # The zero series needs special treatment + if len(c) == 1 and c[0] == 0: + return c + + prd = np.empty(len(c) + 1, dtype=c.dtype) + prd[0] = c[0] + prd[1] = -c[0] + for i in range(1, len(c)): + prd[i + 1] = -c[i]*(i + 1) + prd[i] += c[i]*(2*i + 1) + prd[i - 1] -= c[i]*i + return prd + + +def lagmul(c1, c2): + """ + Multiply one Laguerre series by another. + + Returns the product of two Laguerre series `c1` * `c2`. The arguments + are sequences of coefficients, from lowest order "term" to highest, + e.g., [1,2,3] represents the series ``P_0 + 2*P_1 + 3*P_2``. + + Parameters + ---------- + c1, c2 : array_like + 1-D arrays of Laguerre series coefficients ordered from low to + high. + + Returns + ------- + out : ndarray + Of Laguerre series coefficients representing their product. + + See Also + -------- + lagadd, lagsub, lagmulx, lagdiv, lagpow + + Notes + ----- + In general, the (polynomial) product of two C-series results in terms + that are not in the Laguerre polynomial basis set. Thus, to express + the product as a Laguerre series, it is necessary to "reproject" the + product onto said basis set, which may produce "unintuitive" (but + correct) results; see Examples section below. + + Examples + -------- + >>> from numpy.polynomial.laguerre import lagmul + >>> lagmul([1, 2, 3], [0, 1, 2]) + array([ 8., -13., 38., -51., 36.]) + + """ + # s1, s2 are trimmed copies + [c1, c2] = pu.as_series([c1, c2]) + + if len(c1) > len(c2): + c = c2 + xs = c1 + else: + c = c1 + xs = c2 + + if len(c) == 1: + c0 = c[0]*xs + c1 = 0 + elif len(c) == 2: + c0 = c[0]*xs + c1 = c[1]*xs + else: + nd = len(c) + c0 = c[-2]*xs + c1 = c[-1]*xs + for i in range(3, len(c) + 1): + tmp = c0 + nd = nd - 1 + c0 = lagsub(c[-i]*xs, (c1*(nd - 1))/nd) + c1 = lagadd(tmp, lagsub((2*nd - 1)*c1, lagmulx(c1))/nd) + return lagadd(c0, lagsub(c1, lagmulx(c1))) + + +def lagdiv(c1, c2): + """ + Divide one Laguerre series by another. + + Returns the quotient-with-remainder of two Laguerre series + `c1` / `c2`. The arguments are sequences of coefficients from lowest + order "term" to highest, e.g., [1,2,3] represents the series + ``P_0 + 2*P_1 + 3*P_2``. + + Parameters + ---------- + c1, c2 : array_like + 1-D arrays of Laguerre series coefficients ordered from low to + high. + + Returns + ------- + [quo, rem] : ndarrays + Of Laguerre series coefficients representing the quotient and + remainder. + + See Also + -------- + lagadd, lagsub, lagmulx, lagmul, lagpow + + Notes + ----- + In general, the (polynomial) division of one Laguerre series by another + results in quotient and remainder terms that are not in the Laguerre + polynomial basis set. Thus, to express these results as a Laguerre + series, it is necessary to "reproject" the results onto the Laguerre + basis set, which may produce "unintuitive" (but correct) results; see + Examples section below. + + Examples + -------- + >>> from numpy.polynomial.laguerre import lagdiv + >>> lagdiv([ 8., -13., 38., -51., 36.], [0, 1, 2]) + (array([1., 2., 3.]), array([0.])) + >>> lagdiv([ 9., -12., 38., -51., 36.], [0, 1, 2]) + (array([1., 2., 3.]), array([1., 1.])) + + """ + return pu._div(lagmul, c1, c2) + + +def lagpow(c, pow, maxpower=16): + """Raise a Laguerre series to a power. + + Returns the Laguerre series `c` raised to the power `pow`. The + argument `c` is a sequence of coefficients ordered from low to high. + i.e., [1,2,3] is the series ``P_0 + 2*P_1 + 3*P_2.`` + + Parameters + ---------- + c : array_like + 1-D array of Laguerre series coefficients ordered from low to + high. + pow : integer + Power to which the series will be raised + maxpower : integer, optional + Maximum power allowed. This is mainly to limit growth of the series + to unmanageable size. Default is 16 + + Returns + ------- + coef : ndarray + Laguerre series of power. + + See Also + -------- + lagadd, lagsub, lagmulx, lagmul, lagdiv + + Examples + -------- + >>> from numpy.polynomial.laguerre import lagpow + >>> lagpow([1, 2, 3], 2) + array([ 14., -16., 56., -72., 54.]) + + """ + return pu._pow(lagmul, c, pow, maxpower) + + +def lagder(c, m=1, scl=1, axis=0): + """ + Differentiate a Laguerre series. + + Returns the Laguerre series coefficients `c` differentiated `m` times + along `axis`. At each iteration the result is multiplied by `scl` (the + scaling factor is for use in a linear change of variable). The argument + `c` is an array of coefficients from low to high degree along each + axis, e.g., [1,2,3] represents the series ``1*L_0 + 2*L_1 + 3*L_2`` + while [[1,2],[1,2]] represents ``1*L_0(x)*L_0(y) + 1*L_1(x)*L_0(y) + + 2*L_0(x)*L_1(y) + 2*L_1(x)*L_1(y)`` if axis=0 is ``x`` and axis=1 is + ``y``. + + Parameters + ---------- + c : array_like + Array of Laguerre series coefficients. If `c` is multidimensional + the different axis correspond to different variables with the + degree in each axis given by the corresponding index. + m : int, optional + Number of derivatives taken, must be non-negative. (Default: 1) + scl : scalar, optional + Each differentiation is multiplied by `scl`. The end result is + multiplication by ``scl**m``. This is for use in a linear change of + variable. (Default: 1) + axis : int, optional + Axis over which the derivative is taken. (Default: 0). + + .. versionadded:: 1.7.0 + + Returns + ------- + der : ndarray + Laguerre series of the derivative. + + See Also + -------- + lagint + + Notes + ----- + In general, the result of differentiating a Laguerre series does not + resemble the same operation on a power series. Thus the result of this + function may be "unintuitive," albeit correct; see Examples section + below. + + Examples + -------- + >>> from numpy.polynomial.laguerre import lagder + >>> lagder([ 1., 1., 1., -3.]) + array([1., 2., 3.]) + >>> lagder([ 1., 0., 0., -4., 3.], m=2) + array([1., 2., 3.]) + + """ + c = np.array(c, ndmin=1, copy=True) + if c.dtype.char in '?bBhHiIlLqQpP': + c = c.astype(np.double) + + cnt = pu._deprecate_as_int(m, "the order of derivation") + iaxis = pu._deprecate_as_int(axis, "the axis") + if cnt < 0: + raise ValueError("The order of derivation must be non-negative") + iaxis = normalize_axis_index(iaxis, c.ndim) + + if cnt == 0: + return c + + c = np.moveaxis(c, iaxis, 0) + n = len(c) + if cnt >= n: + c = c[:1]*0 + else: + for i in range(cnt): + n = n - 1 + c *= scl + der = np.empty((n,) + c.shape[1:], dtype=c.dtype) + for j in range(n, 1, -1): + der[j - 1] = -c[j] + c[j - 1] += c[j] + der[0] = -c[1] + c = der + c = np.moveaxis(c, 0, iaxis) + return c + + +def lagint(c, m=1, k=[], lbnd=0, scl=1, axis=0): + """ + Integrate a Laguerre series. + + Returns the Laguerre series coefficients `c` integrated `m` times from + `lbnd` along `axis`. At each iteration the resulting series is + **multiplied** by `scl` and an integration constant, `k`, is added. + The scaling factor is for use in a linear change of variable. ("Buyer + beware": note that, depending on what one is doing, one may want `scl` + to be the reciprocal of what one might expect; for more information, + see the Notes section below.) The argument `c` is an array of + coefficients from low to high degree along each axis, e.g., [1,2,3] + represents the series ``L_0 + 2*L_1 + 3*L_2`` while [[1,2],[1,2]] + represents ``1*L_0(x)*L_0(y) + 1*L_1(x)*L_0(y) + 2*L_0(x)*L_1(y) + + 2*L_1(x)*L_1(y)`` if axis=0 is ``x`` and axis=1 is ``y``. + + + Parameters + ---------- + c : array_like + Array of Laguerre series coefficients. If `c` is multidimensional + the different axis correspond to different variables with the + degree in each axis given by the corresponding index. + m : int, optional + Order of integration, must be positive. (Default: 1) + k : {[], list, scalar}, optional + Integration constant(s). The value of the first integral at + ``lbnd`` is the first value in the list, the value of the second + integral at ``lbnd`` is the second value, etc. If ``k == []`` (the + default), all constants are set to zero. If ``m == 1``, a single + scalar can be given instead of a list. + lbnd : scalar, optional + The lower bound of the integral. (Default: 0) + scl : scalar, optional + Following each integration the result is *multiplied* by `scl` + before the integration constant is added. (Default: 1) + axis : int, optional + Axis over which the integral is taken. (Default: 0). + + .. versionadded:: 1.7.0 + + Returns + ------- + S : ndarray + Laguerre series coefficients of the integral. + + Raises + ------ + ValueError + If ``m < 0``, ``len(k) > m``, ``np.ndim(lbnd) != 0``, or + ``np.ndim(scl) != 0``. + + See Also + -------- + lagder + + Notes + ----- + Note that the result of each integration is *multiplied* by `scl`. + Why is this important to note? Say one is making a linear change of + variable :math:`u = ax + b` in an integral relative to `x`. Then + :math:`dx = du/a`, so one will need to set `scl` equal to + :math:`1/a` - perhaps not what one would have first thought. + + Also note that, in general, the result of integrating a C-series needs + to be "reprojected" onto the C-series basis set. Thus, typically, + the result of this function is "unintuitive," albeit correct; see + Examples section below. + + Examples + -------- + >>> from numpy.polynomial.laguerre import lagint + >>> lagint([1,2,3]) + array([ 1., 1., 1., -3.]) + >>> lagint([1,2,3], m=2) + array([ 1., 0., 0., -4., 3.]) + >>> lagint([1,2,3], k=1) + array([ 2., 1., 1., -3.]) + >>> lagint([1,2,3], lbnd=-1) + array([11.5, 1. , 1. , -3. ]) + >>> lagint([1,2], m=2, k=[1,2], lbnd=-1) + array([ 11.16666667, -5. , -3. , 2. ]) # may vary + + """ + c = np.array(c, ndmin=1, copy=True) + if c.dtype.char in '?bBhHiIlLqQpP': + c = c.astype(np.double) + if not np.iterable(k): + k = [k] + cnt = pu._deprecate_as_int(m, "the order of integration") + iaxis = pu._deprecate_as_int(axis, "the axis") + if cnt < 0: + raise ValueError("The order of integration must be non-negative") + if len(k) > cnt: + raise ValueError("Too many integration constants") + if np.ndim(lbnd) != 0: + raise ValueError("lbnd must be a scalar.") + if np.ndim(scl) != 0: + raise ValueError("scl must be a scalar.") + iaxis = normalize_axis_index(iaxis, c.ndim) + + if cnt == 0: + return c + + c = np.moveaxis(c, iaxis, 0) + k = list(k) + [0]*(cnt - len(k)) + for i in range(cnt): + n = len(c) + c *= scl + if n == 1 and np.all(c[0] == 0): + c[0] += k[i] + else: + tmp = np.empty((n + 1,) + c.shape[1:], dtype=c.dtype) + tmp[0] = c[0] + tmp[1] = -c[0] + for j in range(1, n): + tmp[j] += c[j] + tmp[j + 1] = -c[j] + tmp[0] += k[i] - lagval(lbnd, tmp) + c = tmp + c = np.moveaxis(c, 0, iaxis) + return c + + +def lagval(x, c, tensor=True): + """ + Evaluate a Laguerre series at points x. + + If `c` is of length `n + 1`, this function returns the value: + + .. math:: p(x) = c_0 * L_0(x) + c_1 * L_1(x) + ... + c_n * L_n(x) + + The parameter `x` is converted to an array only if it is a tuple or a + list, otherwise it is treated as a scalar. In either case, either `x` + or its elements must support multiplication and addition both with + themselves and with the elements of `c`. + + If `c` is a 1-D array, then `p(x)` will have the same shape as `x`. If + `c` is multidimensional, then the shape of the result depends on the + value of `tensor`. If `tensor` is true the shape will be c.shape[1:] + + x.shape. If `tensor` is false the shape will be c.shape[1:]. Note that + scalars have shape (,). + + Trailing zeros in the coefficients will be used in the evaluation, so + they should be avoided if efficiency is a concern. + + Parameters + ---------- + x : array_like, compatible object + If `x` is a list or tuple, it is converted to an ndarray, otherwise + it is left unchanged and treated as a scalar. In either case, `x` + or its elements must support addition and multiplication with + themselves and with the elements of `c`. + c : array_like + Array of coefficients ordered so that the coefficients for terms of + degree n are contained in c[n]. If `c` is multidimensional the + remaining indices enumerate multiple polynomials. In the two + dimensional case the coefficients may be thought of as stored in + the columns of `c`. + tensor : boolean, optional + If True, the shape of the coefficient array is extended with ones + on the right, one for each dimension of `x`. Scalars have dimension 0 + for this action. The result is that every column of coefficients in + `c` is evaluated for every element of `x`. If False, `x` is broadcast + over the columns of `c` for the evaluation. This keyword is useful + when `c` is multidimensional. The default value is True. + + .. versionadded:: 1.7.0 + + Returns + ------- + values : ndarray, algebra_like + The shape of the return value is described above. + + See Also + -------- + lagval2d, laggrid2d, lagval3d, laggrid3d + + Notes + ----- + The evaluation uses Clenshaw recursion, aka synthetic division. + + Examples + -------- + >>> from numpy.polynomial.laguerre import lagval + >>> coef = [1,2,3] + >>> lagval(1, coef) + -0.5 + >>> lagval([[1,2],[3,4]], coef) + array([[-0.5, -4. ], + [-4.5, -2. ]]) + + """ + c = np.array(c, ndmin=1, copy=False) + if c.dtype.char in '?bBhHiIlLqQpP': + c = c.astype(np.double) + if isinstance(x, (tuple, list)): + x = np.asarray(x) + if isinstance(x, np.ndarray) and tensor: + c = c.reshape(c.shape + (1,)*x.ndim) + + if len(c) == 1: + c0 = c[0] + c1 = 0 + elif len(c) == 2: + c0 = c[0] + c1 = c[1] + else: + nd = len(c) + c0 = c[-2] + c1 = c[-1] + for i in range(3, len(c) + 1): + tmp = c0 + nd = nd - 1 + c0 = c[-i] - (c1*(nd - 1))/nd + c1 = tmp + (c1*((2*nd - 1) - x))/nd + return c0 + c1*(1 - x) + + +def lagval2d(x, y, c): + """ + Evaluate a 2-D Laguerre series at points (x, y). + + This function returns the values: + + .. math:: p(x,y) = \\sum_{i,j} c_{i,j} * L_i(x) * L_j(y) + + The parameters `x` and `y` are converted to arrays only if they are + tuples or a lists, otherwise they are treated as a scalars and they + must have the same shape after conversion. In either case, either `x` + and `y` or their elements must support multiplication and addition both + with themselves and with the elements of `c`. + + If `c` is a 1-D array a one is implicitly appended to its shape to make + it 2-D. The shape of the result will be c.shape[2:] + x.shape. + + Parameters + ---------- + x, y : array_like, compatible objects + The two dimensional series is evaluated at the points `(x, y)`, + where `x` and `y` must have the same shape. If `x` or `y` is a list + or tuple, it is first converted to an ndarray, otherwise it is left + unchanged and if it isn't an ndarray it is treated as a scalar. + c : array_like + Array of coefficients ordered so that the coefficient of the term + of multi-degree i,j is contained in ``c[i,j]``. If `c` has + dimension greater than two the remaining indices enumerate multiple + sets of coefficients. + + Returns + ------- + values : ndarray, compatible object + The values of the two dimensional polynomial at points formed with + pairs of corresponding values from `x` and `y`. + + See Also + -------- + lagval, laggrid2d, lagval3d, laggrid3d + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + return pu._valnd(lagval, c, x, y) + + +def laggrid2d(x, y, c): + """ + Evaluate a 2-D Laguerre series on the Cartesian product of x and y. + + This function returns the values: + + .. math:: p(a,b) = \\sum_{i,j} c_{i,j} * L_i(a) * L_j(b) + + where the points `(a, b)` consist of all pairs formed by taking + `a` from `x` and `b` from `y`. The resulting points form a grid with + `x` in the first dimension and `y` in the second. + + The parameters `x` and `y` are converted to arrays only if they are + tuples or a lists, otherwise they are treated as a scalars. In either + case, either `x` and `y` or their elements must support multiplication + and addition both with themselves and with the elements of `c`. + + If `c` has fewer than two dimensions, ones are implicitly appended to + its shape to make it 2-D. The shape of the result will be c.shape[2:] + + x.shape + y.shape. + + Parameters + ---------- + x, y : array_like, compatible objects + The two dimensional series is evaluated at the points in the + Cartesian product of `x` and `y`. If `x` or `y` is a list or + tuple, it is first converted to an ndarray, otherwise it is left + unchanged and, if it isn't an ndarray, it is treated as a scalar. + c : array_like + Array of coefficients ordered so that the coefficient of the term of + multi-degree i,j is contained in `c[i,j]`. If `c` has dimension + greater than two the remaining indices enumerate multiple sets of + coefficients. + + Returns + ------- + values : ndarray, compatible object + The values of the two dimensional Chebyshev series at points in the + Cartesian product of `x` and `y`. + + See Also + -------- + lagval, lagval2d, lagval3d, laggrid3d + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + return pu._gridnd(lagval, c, x, y) + + +def lagval3d(x, y, z, c): + """ + Evaluate a 3-D Laguerre series at points (x, y, z). + + This function returns the values: + + .. math:: p(x,y,z) = \\sum_{i,j,k} c_{i,j,k} * L_i(x) * L_j(y) * L_k(z) + + The parameters `x`, `y`, and `z` are converted to arrays only if + they are tuples or a lists, otherwise they are treated as a scalars and + they must have the same shape after conversion. In either case, either + `x`, `y`, and `z` or their elements must support multiplication and + addition both with themselves and with the elements of `c`. + + If `c` has fewer than 3 dimensions, ones are implicitly appended to its + shape to make it 3-D. The shape of the result will be c.shape[3:] + + x.shape. + + Parameters + ---------- + x, y, z : array_like, compatible object + The three dimensional series is evaluated at the points + `(x, y, z)`, where `x`, `y`, and `z` must have the same shape. If + any of `x`, `y`, or `z` is a list or tuple, it is first converted + to an ndarray, otherwise it is left unchanged and if it isn't an + ndarray it is treated as a scalar. + c : array_like + Array of coefficients ordered so that the coefficient of the term of + multi-degree i,j,k is contained in ``c[i,j,k]``. If `c` has dimension + greater than 3 the remaining indices enumerate multiple sets of + coefficients. + + Returns + ------- + values : ndarray, compatible object + The values of the multidimensional polynomial on points formed with + triples of corresponding values from `x`, `y`, and `z`. + + See Also + -------- + lagval, lagval2d, laggrid2d, laggrid3d + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + return pu._valnd(lagval, c, x, y, z) + + +def laggrid3d(x, y, z, c): + """ + Evaluate a 3-D Laguerre series on the Cartesian product of x, y, and z. + + This function returns the values: + + .. math:: p(a,b,c) = \\sum_{i,j,k} c_{i,j,k} * L_i(a) * L_j(b) * L_k(c) + + where the points `(a, b, c)` consist of all triples formed by taking + `a` from `x`, `b` from `y`, and `c` from `z`. The resulting points form + a grid with `x` in the first dimension, `y` in the second, and `z` in + the third. + + The parameters `x`, `y`, and `z` are converted to arrays only if they + are tuples or a lists, otherwise they are treated as a scalars. In + either case, either `x`, `y`, and `z` or their elements must support + multiplication and addition both with themselves and with the elements + of `c`. + + If `c` has fewer than three dimensions, ones are implicitly appended to + its shape to make it 3-D. The shape of the result will be c.shape[3:] + + x.shape + y.shape + z.shape. + + Parameters + ---------- + x, y, z : array_like, compatible objects + The three dimensional series is evaluated at the points in the + Cartesian product of `x`, `y`, and `z`. If `x`,`y`, or `z` is a + list or tuple, it is first converted to an ndarray, otherwise it is + left unchanged and, if it isn't an ndarray, it is treated as a + scalar. + c : array_like + Array of coefficients ordered so that the coefficients for terms of + degree i,j are contained in ``c[i,j]``. If `c` has dimension + greater than two the remaining indices enumerate multiple sets of + coefficients. + + Returns + ------- + values : ndarray, compatible object + The values of the two dimensional polynomial at points in the Cartesian + product of `x` and `y`. + + See Also + -------- + lagval, lagval2d, laggrid2d, lagval3d + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + return pu._gridnd(lagval, c, x, y, z) + + +def lagvander(x, deg): + """Pseudo-Vandermonde matrix of given degree. + + Returns the pseudo-Vandermonde matrix of degree `deg` and sample points + `x`. The pseudo-Vandermonde matrix is defined by + + .. math:: V[..., i] = L_i(x) + + where `0 <= i <= deg`. The leading indices of `V` index the elements of + `x` and the last index is the degree of the Laguerre polynomial. + + If `c` is a 1-D array of coefficients of length `n + 1` and `V` is the + array ``V = lagvander(x, n)``, then ``np.dot(V, c)`` and + ``lagval(x, c)`` are the same up to roundoff. This equivalence is + useful both for least squares fitting and for the evaluation of a large + number of Laguerre series of the same degree and sample points. + + Parameters + ---------- + x : array_like + Array of points. The dtype is converted to float64 or complex128 + depending on whether any of the elements are complex. If `x` is + scalar it is converted to a 1-D array. + deg : int + Degree of the resulting matrix. + + Returns + ------- + vander : ndarray + The pseudo-Vandermonde matrix. The shape of the returned matrix is + ``x.shape + (deg + 1,)``, where The last index is the degree of the + corresponding Laguerre polynomial. The dtype will be the same as + the converted `x`. + + Examples + -------- + >>> from numpy.polynomial.laguerre import lagvander + >>> x = np.array([0, 1, 2]) + >>> lagvander(x, 3) + array([[ 1. , 1. , 1. , 1. ], + [ 1. , 0. , -0.5 , -0.66666667], + [ 1. , -1. , -1. , -0.33333333]]) + + """ + ideg = pu._deprecate_as_int(deg, "deg") + if ideg < 0: + raise ValueError("deg must be non-negative") + + x = np.array(x, copy=False, ndmin=1) + 0.0 + dims = (ideg + 1,) + x.shape + dtyp = x.dtype + v = np.empty(dims, dtype=dtyp) + v[0] = x*0 + 1 + if ideg > 0: + v[1] = 1 - x + for i in range(2, ideg + 1): + v[i] = (v[i-1]*(2*i - 1 - x) - v[i-2]*(i - 1))/i + return np.moveaxis(v, 0, -1) + + +def lagvander2d(x, y, deg): + """Pseudo-Vandermonde matrix of given degrees. + + Returns the pseudo-Vandermonde matrix of degrees `deg` and sample + points `(x, y)`. The pseudo-Vandermonde matrix is defined by + + .. math:: V[..., (deg[1] + 1)*i + j] = L_i(x) * L_j(y), + + where `0 <= i <= deg[0]` and `0 <= j <= deg[1]`. The leading indices of + `V` index the points `(x, y)` and the last index encodes the degrees of + the Laguerre polynomials. + + If ``V = lagvander2d(x, y, [xdeg, ydeg])``, then the columns of `V` + correspond to the elements of a 2-D coefficient array `c` of shape + (xdeg + 1, ydeg + 1) in the order + + .. math:: c_{00}, c_{01}, c_{02} ... , c_{10}, c_{11}, c_{12} ... + + and ``np.dot(V, c.flat)`` and ``lagval2d(x, y, c)`` will be the same + up to roundoff. This equivalence is useful both for least squares + fitting and for the evaluation of a large number of 2-D Laguerre + series of the same degrees and sample points. + + Parameters + ---------- + x, y : array_like + Arrays of point coordinates, all of the same shape. The dtypes + will be converted to either float64 or complex128 depending on + whether any of the elements are complex. Scalars are converted to + 1-D arrays. + deg : list of ints + List of maximum degrees of the form [x_deg, y_deg]. + + Returns + ------- + vander2d : ndarray + The shape of the returned matrix is ``x.shape + (order,)``, where + :math:`order = (deg[0]+1)*(deg[1]+1)`. The dtype will be the same + as the converted `x` and `y`. + + See Also + -------- + lagvander, lagvander3d, lagval2d, lagval3d + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + return pu._vander_nd_flat((lagvander, lagvander), (x, y), deg) + + +def lagvander3d(x, y, z, deg): + """Pseudo-Vandermonde matrix of given degrees. + + Returns the pseudo-Vandermonde matrix of degrees `deg` and sample + points `(x, y, z)`. If `l, m, n` are the given degrees in `x, y, z`, + then The pseudo-Vandermonde matrix is defined by + + .. math:: V[..., (m+1)(n+1)i + (n+1)j + k] = L_i(x)*L_j(y)*L_k(z), + + where `0 <= i <= l`, `0 <= j <= m`, and `0 <= j <= n`. The leading + indices of `V` index the points `(x, y, z)` and the last index encodes + the degrees of the Laguerre polynomials. + + If ``V = lagvander3d(x, y, z, [xdeg, ydeg, zdeg])``, then the columns + of `V` correspond to the elements of a 3-D coefficient array `c` of + shape (xdeg + 1, ydeg + 1, zdeg + 1) in the order + + .. math:: c_{000}, c_{001}, c_{002},... , c_{010}, c_{011}, c_{012},... + + and ``np.dot(V, c.flat)`` and ``lagval3d(x, y, z, c)`` will be the + same up to roundoff. This equivalence is useful both for least squares + fitting and for the evaluation of a large number of 3-D Laguerre + series of the same degrees and sample points. + + Parameters + ---------- + x, y, z : array_like + Arrays of point coordinates, all of the same shape. The dtypes will + be converted to either float64 or complex128 depending on whether + any of the elements are complex. Scalars are converted to 1-D + arrays. + deg : list of ints + List of maximum degrees of the form [x_deg, y_deg, z_deg]. + + Returns + ------- + vander3d : ndarray + The shape of the returned matrix is ``x.shape + (order,)``, where + :math:`order = (deg[0]+1)*(deg[1]+1)*(deg[2]+1)`. The dtype will + be the same as the converted `x`, `y`, and `z`. + + See Also + -------- + lagvander, lagvander3d, lagval2d, lagval3d + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + return pu._vander_nd_flat((lagvander, lagvander, lagvander), (x, y, z), deg) + + +def lagfit(x, y, deg, rcond=None, full=False, w=None): + """ + Least squares fit of Laguerre series to data. + + Return the coefficients of a Laguerre series of degree `deg` that is the + least squares fit to the data values `y` given at points `x`. If `y` is + 1-D the returned coefficients will also be 1-D. If `y` is 2-D multiple + fits are done, one for each column of `y`, and the resulting + coefficients are stored in the corresponding columns of a 2-D return. + The fitted polynomial(s) are in the form + + .. math:: p(x) = c_0 + c_1 * L_1(x) + ... + c_n * L_n(x), + + where ``n`` is `deg`. + + Parameters + ---------- + x : array_like, shape (M,) + x-coordinates of the M sample points ``(x[i], y[i])``. + y : array_like, shape (M,) or (M, K) + y-coordinates of the sample points. Several data sets of sample + points sharing the same x-coordinates can be fitted at once by + passing in a 2D-array that contains one dataset per column. + deg : int or 1-D array_like + Degree(s) of the fitting polynomials. If `deg` is a single integer + all terms up to and including the `deg`'th term are included in the + fit. For NumPy versions >= 1.11.0 a list of integers specifying the + degrees of the terms to include may be used instead. + rcond : float, optional + Relative condition number of the fit. Singular values smaller than + this relative to the largest singular value will be ignored. The + default value is len(x)*eps, where eps is the relative precision of + the float type, about 2e-16 in most cases. + full : bool, optional + Switch determining nature of return value. When it is False (the + default) just the coefficients are returned, when True diagnostic + information from the singular value decomposition is also returned. + w : array_like, shape (`M`,), optional + Weights. If not None, the weight ``w[i]`` applies to the unsquared + residual ``y[i] - y_hat[i]`` at ``x[i]``. Ideally the weights are + chosen so that the errors of the products ``w[i]*y[i]`` all have the + same variance. When using inverse-variance weighting, use + ``w[i] = 1/sigma(y[i])``. The default value is None. + + Returns + ------- + coef : ndarray, shape (M,) or (M, K) + Laguerre coefficients ordered from low to high. If `y` was 2-D, + the coefficients for the data in column *k* of `y` are in column + *k*. + + [residuals, rank, singular_values, rcond] : list + These values are only returned if ``full == True`` + + - residuals -- sum of squared residuals of the least squares fit + - rank -- the numerical rank of the scaled Vandermonde matrix + - singular_values -- singular values of the scaled Vandermonde matrix + - rcond -- value of `rcond`. + + For more details, see `numpy.linalg.lstsq`. + + Warns + ----- + RankWarning + The rank of the coefficient matrix in the least-squares fit is + deficient. The warning is only raised if ``full == False``. The + warnings can be turned off by + + >>> import warnings + >>> warnings.simplefilter('ignore', np.RankWarning) + + See Also + -------- + numpy.polynomial.polynomial.polyfit + numpy.polynomial.legendre.legfit + numpy.polynomial.chebyshev.chebfit + numpy.polynomial.hermite.hermfit + numpy.polynomial.hermite_e.hermefit + lagval : Evaluates a Laguerre series. + lagvander : pseudo Vandermonde matrix of Laguerre series. + lagweight : Laguerre weight function. + numpy.linalg.lstsq : Computes a least-squares fit from the matrix. + scipy.interpolate.UnivariateSpline : Computes spline fits. + + Notes + ----- + The solution is the coefficients of the Laguerre series ``p`` that + minimizes the sum of the weighted squared errors + + .. math:: E = \\sum_j w_j^2 * |y_j - p(x_j)|^2, + + where the :math:`w_j` are the weights. This problem is solved by + setting up as the (typically) overdetermined matrix equation + + .. math:: V(x) * c = w * y, + + where ``V`` is the weighted pseudo Vandermonde matrix of `x`, ``c`` are the + coefficients to be solved for, `w` are the weights, and `y` are the + observed values. This equation is then solved using the singular value + decomposition of ``V``. + + If some of the singular values of `V` are so small that they are + neglected, then a `RankWarning` will be issued. This means that the + coefficient values may be poorly determined. Using a lower order fit + will usually get rid of the warning. The `rcond` parameter can also be + set to a value smaller than its default, but the resulting fit may be + spurious and have large contributions from roundoff error. + + Fits using Laguerre series are probably most useful when the data can + be approximated by ``sqrt(w(x)) * p(x)``, where ``w(x)`` is the Laguerre + weight. In that case the weight ``sqrt(w(x[i]))`` should be used + together with data values ``y[i]/sqrt(w(x[i]))``. The weight function is + available as `lagweight`. + + References + ---------- + .. [1] Wikipedia, "Curve fitting", + https://en.wikipedia.org/wiki/Curve_fitting + + Examples + -------- + >>> from numpy.polynomial.laguerre import lagfit, lagval + >>> x = np.linspace(0, 10) + >>> err = np.random.randn(len(x))/10 + >>> y = lagval(x, [1, 2, 3]) + err + >>> lagfit(x, y, 2) + array([ 0.96971004, 2.00193749, 3.00288744]) # may vary + + """ + return pu._fit(lagvander, x, y, deg, rcond, full, w) + + +def lagcompanion(c): + """ + Return the companion matrix of c. + + The usual companion matrix of the Laguerre polynomials is already + symmetric when `c` is a basis Laguerre polynomial, so no scaling is + applied. + + Parameters + ---------- + c : array_like + 1-D array of Laguerre series coefficients ordered from low to high + degree. + + Returns + ------- + mat : ndarray + Companion matrix of dimensions (deg, deg). + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + # c is a trimmed copy + [c] = pu.as_series([c]) + if len(c) < 2: + raise ValueError('Series must have maximum degree of at least 1.') + if len(c) == 2: + return np.array([[1 + c[0]/c[1]]]) + + n = len(c) - 1 + mat = np.zeros((n, n), dtype=c.dtype) + top = mat.reshape(-1)[1::n+1] + mid = mat.reshape(-1)[0::n+1] + bot = mat.reshape(-1)[n::n+1] + top[...] = -np.arange(1, n) + mid[...] = 2.*np.arange(n) + 1. + bot[...] = top + mat[:, -1] += (c[:-1]/c[-1])*n + return mat + + +def lagroots(c): + """ + Compute the roots of a Laguerre series. + + Return the roots (a.k.a. "zeros") of the polynomial + + .. math:: p(x) = \\sum_i c[i] * L_i(x). + + Parameters + ---------- + c : 1-D array_like + 1-D array of coefficients. + + Returns + ------- + out : ndarray + Array of the roots of the series. If all the roots are real, + then `out` is also real, otherwise it is complex. + + See Also + -------- + numpy.polynomial.polynomial.polyroots + numpy.polynomial.legendre.legroots + numpy.polynomial.chebyshev.chebroots + numpy.polynomial.hermite.hermroots + numpy.polynomial.hermite_e.hermeroots + + Notes + ----- + The root estimates are obtained as the eigenvalues of the companion + matrix, Roots far from the origin of the complex plane may have large + errors due to the numerical instability of the series for such + values. Roots with multiplicity greater than 1 will also show larger + errors as the value of the series near such points is relatively + insensitive to errors in the roots. Isolated roots near the origin can + be improved by a few iterations of Newton's method. + + The Laguerre series basis polynomials aren't powers of `x` so the + results of this function may seem unintuitive. + + Examples + -------- + >>> from numpy.polynomial.laguerre import lagroots, lagfromroots + >>> coef = lagfromroots([0, 1, 2]) + >>> coef + array([ 2., -8., 12., -6.]) + >>> lagroots(coef) + array([-4.4408921e-16, 1.0000000e+00, 2.0000000e+00]) + + """ + # c is a trimmed copy + [c] = pu.as_series([c]) + if len(c) <= 1: + return np.array([], dtype=c.dtype) + if len(c) == 2: + return np.array([1 + c[0]/c[1]]) + + # rotated companion matrix reduces error + m = lagcompanion(c)[::-1,::-1] + r = la.eigvals(m) + r.sort() + return r + + +def laggauss(deg): + """ + Gauss-Laguerre quadrature. + + Computes the sample points and weights for Gauss-Laguerre quadrature. + These sample points and weights will correctly integrate polynomials of + degree :math:`2*deg - 1` or less over the interval :math:`[0, \\inf]` + with the weight function :math:`f(x) = \\exp(-x)`. + + Parameters + ---------- + deg : int + Number of sample points and weights. It must be >= 1. + + Returns + ------- + x : ndarray + 1-D ndarray containing the sample points. + y : ndarray + 1-D ndarray containing the weights. + + Notes + ----- + + .. versionadded:: 1.7.0 + + The results have only been tested up to degree 100 higher degrees may + be problematic. The weights are determined by using the fact that + + .. math:: w_k = c / (L'_n(x_k) * L_{n-1}(x_k)) + + where :math:`c` is a constant independent of :math:`k` and :math:`x_k` + is the k'th root of :math:`L_n`, and then scaling the results to get + the right value when integrating 1. + + """ + ideg = pu._deprecate_as_int(deg, "deg") + if ideg <= 0: + raise ValueError("deg must be a positive integer") + + # first approximation of roots. We use the fact that the companion + # matrix is symmetric in this case in order to obtain better zeros. + c = np.array([0]*deg + [1]) + m = lagcompanion(c) + x = la.eigvalsh(m) + + # improve roots by one application of Newton + dy = lagval(x, c) + df = lagval(x, lagder(c)) + x -= dy/df + + # compute the weights. We scale the factor to avoid possible numerical + # overflow. + fm = lagval(x, c[1:]) + fm /= np.abs(fm).max() + df /= np.abs(df).max() + w = 1/(fm * df) + + # scale w to get the right value, 1 in this case + w /= w.sum() + + return x, w + + +def lagweight(x): + """Weight function of the Laguerre polynomials. + + The weight function is :math:`exp(-x)` and the interval of integration + is :math:`[0, \\inf]`. The Laguerre polynomials are orthogonal, but not + normalized, with respect to this weight function. + + Parameters + ---------- + x : array_like + Values at which the weight function will be computed. + + Returns + ------- + w : ndarray + The weight function at `x`. + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + w = np.exp(-x) + return w + +# +# Laguerre series class +# + +class Laguerre(ABCPolyBase): + """A Laguerre series class. + + The Laguerre class provides the standard Python numerical methods + '+', '-', '*', '//', '%', 'divmod', '**', and '()' as well as the + attributes and methods listed in the `ABCPolyBase` documentation. + + Parameters + ---------- + coef : array_like + Laguerre coefficients in order of increasing degree, i.e, + ``(1, 2, 3)`` gives ``1*L_0(x) + 2*L_1(X) + 3*L_2(x)``. + domain : (2,) array_like, optional + Domain to use. The interval ``[domain[0], domain[1]]`` is mapped + to the interval ``[window[0], window[1]]`` by shifting and scaling. + The default value is [0, 1]. + window : (2,) array_like, optional + Window, see `domain` for its use. The default value is [0, 1]. + + .. versionadded:: 1.6.0 + symbol : str, optional + Symbol used to represent the independent variable in string + representations of the polynomial expression, e.g. for printing. + The symbol must be a valid Python identifier. Default value is 'x'. + + .. versionadded:: 1.24 + + """ + # Virtual Functions + _add = staticmethod(lagadd) + _sub = staticmethod(lagsub) + _mul = staticmethod(lagmul) + _div = staticmethod(lagdiv) + _pow = staticmethod(lagpow) + _val = staticmethod(lagval) + _int = staticmethod(lagint) + _der = staticmethod(lagder) + _fit = staticmethod(lagfit) + _line = staticmethod(lagline) + _roots = staticmethod(lagroots) + _fromroots = staticmethod(lagfromroots) + + # Virtual properties + domain = np.array(lagdomain) + window = np.array(lagdomain) + basis_name = 'L' diff --git a/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/laguerre.pyi b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/laguerre.pyi new file mode 100644 index 0000000000000000000000000000000000000000..e546bc20a54c0e522cd7ea851ad8e8a42d895980 --- /dev/null +++ b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/laguerre.pyi @@ -0,0 +1,46 @@ +from typing import Any + +from numpy import ndarray, dtype, int_ +from numpy.polynomial._polybase import ABCPolyBase +from numpy.polynomial.polyutils import trimcoef + +__all__: list[str] + +lagtrim = trimcoef + +def poly2lag(pol): ... +def lag2poly(c): ... + +lagdomain: ndarray[Any, dtype[int_]] +lagzero: ndarray[Any, dtype[int_]] +lagone: ndarray[Any, dtype[int_]] +lagx: ndarray[Any, dtype[int_]] + +def lagline(off, scl): ... +def lagfromroots(roots): ... +def lagadd(c1, c2): ... +def lagsub(c1, c2): ... +def lagmulx(c): ... +def lagmul(c1, c2): ... +def lagdiv(c1, c2): ... +def lagpow(c, pow, maxpower=...): ... +def lagder(c, m=..., scl=..., axis=...): ... +def lagint(c, m=..., k = ..., lbnd=..., scl=..., axis=...): ... +def lagval(x, c, tensor=...): ... +def lagval2d(x, y, c): ... +def laggrid2d(x, y, c): ... +def lagval3d(x, y, z, c): ... +def laggrid3d(x, y, z, c): ... +def lagvander(x, deg): ... +def lagvander2d(x, y, deg): ... +def lagvander3d(x, y, z, deg): ... +def lagfit(x, y, deg, rcond=..., full=..., w=...): ... +def lagcompanion(c): ... +def lagroots(c): ... +def laggauss(deg): ... +def lagweight(x): ... + +class Laguerre(ABCPolyBase): + domain: Any + window: Any + basis_name: Any diff --git a/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/legendre.py b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/legendre.py new file mode 100644 index 0000000000000000000000000000000000000000..8e9c19d94ff60c7d314231e8bfbc1c200f12653e --- /dev/null +++ b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/legendre.py @@ -0,0 +1,1664 @@ +""" +================================================== +Legendre Series (:mod:`numpy.polynomial.legendre`) +================================================== + +This module provides a number of objects (mostly functions) useful for +dealing with Legendre series, including a `Legendre` class that +encapsulates the usual arithmetic operations. (General information +on how this module represents and works with such polynomials is in the +docstring for its "parent" sub-package, `numpy.polynomial`). + +Classes +------- +.. autosummary:: + :toctree: generated/ + + Legendre + +Constants +--------- + +.. autosummary:: + :toctree: generated/ + + legdomain + legzero + legone + legx + +Arithmetic +---------- + +.. autosummary:: + :toctree: generated/ + + legadd + legsub + legmulx + legmul + legdiv + legpow + legval + legval2d + legval3d + leggrid2d + leggrid3d + +Calculus +-------- + +.. autosummary:: + :toctree: generated/ + + legder + legint + +Misc Functions +-------------- + +.. autosummary:: + :toctree: generated/ + + legfromroots + legroots + legvander + legvander2d + legvander3d + leggauss + legweight + legcompanion + legfit + legtrim + legline + leg2poly + poly2leg + +See also +-------- +numpy.polynomial + +""" +import numpy as np +import numpy.linalg as la +from numpy.core.multiarray import normalize_axis_index + +from . import polyutils as pu +from ._polybase import ABCPolyBase + +__all__ = [ + 'legzero', 'legone', 'legx', 'legdomain', 'legline', 'legadd', + 'legsub', 'legmulx', 'legmul', 'legdiv', 'legpow', 'legval', 'legder', + 'legint', 'leg2poly', 'poly2leg', 'legfromroots', 'legvander', + 'legfit', 'legtrim', 'legroots', 'Legendre', 'legval2d', 'legval3d', + 'leggrid2d', 'leggrid3d', 'legvander2d', 'legvander3d', 'legcompanion', + 'leggauss', 'legweight'] + +legtrim = pu.trimcoef + + +def poly2leg(pol): + """ + Convert a polynomial to a Legendre series. + + Convert an array representing the coefficients of a polynomial (relative + to the "standard" basis) ordered from lowest degree to highest, to an + array of the coefficients of the equivalent Legendre series, ordered + from lowest to highest degree. + + Parameters + ---------- + pol : array_like + 1-D array containing the polynomial coefficients + + Returns + ------- + c : ndarray + 1-D array containing the coefficients of the equivalent Legendre + series. + + See Also + -------- + leg2poly + + Notes + ----- + The easy way to do conversions between polynomial basis sets + is to use the convert method of a class instance. + + Examples + -------- + >>> from numpy import polynomial as P + >>> p = P.Polynomial(np.arange(4)) + >>> p + Polynomial([0., 1., 2., 3.], domain=[-1, 1], window=[-1, 1]) + >>> c = P.Legendre(P.legendre.poly2leg(p.coef)) + >>> c + Legendre([ 1. , 3.25, 1. , 0.75], domain=[-1, 1], window=[-1, 1]) # may vary + + """ + [pol] = pu.as_series([pol]) + deg = len(pol) - 1 + res = 0 + for i in range(deg, -1, -1): + res = legadd(legmulx(res), pol[i]) + return res + + +def leg2poly(c): + """ + Convert a Legendre series to a polynomial. + + Convert an array representing the coefficients of a Legendre series, + ordered from lowest degree to highest, to an array of the coefficients + of the equivalent polynomial (relative to the "standard" basis) ordered + from lowest to highest degree. + + Parameters + ---------- + c : array_like + 1-D array containing the Legendre series coefficients, ordered + from lowest order term to highest. + + Returns + ------- + pol : ndarray + 1-D array containing the coefficients of the equivalent polynomial + (relative to the "standard" basis) ordered from lowest order term + to highest. + + See Also + -------- + poly2leg + + Notes + ----- + The easy way to do conversions between polynomial basis sets + is to use the convert method of a class instance. + + Examples + -------- + >>> from numpy import polynomial as P + >>> c = P.Legendre(range(4)) + >>> c + Legendre([0., 1., 2., 3.], domain=[-1, 1], window=[-1, 1]) + >>> p = c.convert(kind=P.Polynomial) + >>> p + Polynomial([-1. , -3.5, 3. , 7.5], domain=[-1., 1.], window=[-1., 1.]) + >>> P.legendre.leg2poly(range(4)) + array([-1. , -3.5, 3. , 7.5]) + + + """ + from .polynomial import polyadd, polysub, polymulx + + [c] = pu.as_series([c]) + n = len(c) + if n < 3: + return c + else: + c0 = c[-2] + c1 = c[-1] + # i is the current degree of c1 + for i in range(n - 1, 1, -1): + tmp = c0 + c0 = polysub(c[i - 2], (c1*(i - 1))/i) + c1 = polyadd(tmp, (polymulx(c1)*(2*i - 1))/i) + return polyadd(c0, polymulx(c1)) + +# +# These are constant arrays are of integer type so as to be compatible +# with the widest range of other types, such as Decimal. +# + +# Legendre +legdomain = np.array([-1, 1]) + +# Legendre coefficients representing zero. +legzero = np.array([0]) + +# Legendre coefficients representing one. +legone = np.array([1]) + +# Legendre coefficients representing the identity x. +legx = np.array([0, 1]) + + +def legline(off, scl): + """ + Legendre series whose graph is a straight line. + + + + Parameters + ---------- + off, scl : scalars + The specified line is given by ``off + scl*x``. + + Returns + ------- + y : ndarray + This module's representation of the Legendre series for + ``off + scl*x``. + + See Also + -------- + numpy.polynomial.polynomial.polyline + numpy.polynomial.chebyshev.chebline + numpy.polynomial.laguerre.lagline + numpy.polynomial.hermite.hermline + numpy.polynomial.hermite_e.hermeline + + Examples + -------- + >>> import numpy.polynomial.legendre as L + >>> L.legline(3,2) + array([3, 2]) + >>> L.legval(-3, L.legline(3,2)) # should be -3 + -3.0 + + """ + if scl != 0: + return np.array([off, scl]) + else: + return np.array([off]) + + +def legfromroots(roots): + """ + Generate a Legendre series with given roots. + + The function returns the coefficients of the polynomial + + .. math:: p(x) = (x - r_0) * (x - r_1) * ... * (x - r_n), + + in Legendre form, where the `r_n` are the roots specified in `roots`. + If a zero has multiplicity n, then it must appear in `roots` n times. + For instance, if 2 is a root of multiplicity three and 3 is a root of + multiplicity 2, then `roots` looks something like [2, 2, 2, 3, 3]. The + roots can appear in any order. + + If the returned coefficients are `c`, then + + .. math:: p(x) = c_0 + c_1 * L_1(x) + ... + c_n * L_n(x) + + The coefficient of the last term is not generally 1 for monic + polynomials in Legendre form. + + Parameters + ---------- + roots : array_like + Sequence containing the roots. + + Returns + ------- + out : ndarray + 1-D array of coefficients. If all roots are real then `out` is a + real array, if some of the roots are complex, then `out` is complex + even if all the coefficients in the result are real (see Examples + below). + + See Also + -------- + numpy.polynomial.polynomial.polyfromroots + numpy.polynomial.chebyshev.chebfromroots + numpy.polynomial.laguerre.lagfromroots + numpy.polynomial.hermite.hermfromroots + numpy.polynomial.hermite_e.hermefromroots + + Examples + -------- + >>> import numpy.polynomial.legendre as L + >>> L.legfromroots((-1,0,1)) # x^3 - x relative to the standard basis + array([ 0. , -0.4, 0. , 0.4]) + >>> j = complex(0,1) + >>> L.legfromroots((-j,j)) # x^2 + 1 relative to the standard basis + array([ 1.33333333+0.j, 0.00000000+0.j, 0.66666667+0.j]) # may vary + + """ + return pu._fromroots(legline, legmul, roots) + + +def legadd(c1, c2): + """ + Add one Legendre series to another. + + Returns the sum of two Legendre series `c1` + `c2`. The arguments + are sequences of coefficients ordered from lowest order term to + highest, i.e., [1,2,3] represents the series ``P_0 + 2*P_1 + 3*P_2``. + + Parameters + ---------- + c1, c2 : array_like + 1-D arrays of Legendre series coefficients ordered from low to + high. + + Returns + ------- + out : ndarray + Array representing the Legendre series of their sum. + + See Also + -------- + legsub, legmulx, legmul, legdiv, legpow + + Notes + ----- + Unlike multiplication, division, etc., the sum of two Legendre series + is a Legendre series (without having to "reproject" the result onto + the basis set) so addition, just like that of "standard" polynomials, + is simply "component-wise." + + Examples + -------- + >>> from numpy.polynomial import legendre as L + >>> c1 = (1,2,3) + >>> c2 = (3,2,1) + >>> L.legadd(c1,c2) + array([4., 4., 4.]) + + """ + return pu._add(c1, c2) + + +def legsub(c1, c2): + """ + Subtract one Legendre series from another. + + Returns the difference of two Legendre series `c1` - `c2`. The + sequences of coefficients are from lowest order term to highest, i.e., + [1,2,3] represents the series ``P_0 + 2*P_1 + 3*P_2``. + + Parameters + ---------- + c1, c2 : array_like + 1-D arrays of Legendre series coefficients ordered from low to + high. + + Returns + ------- + out : ndarray + Of Legendre series coefficients representing their difference. + + See Also + -------- + legadd, legmulx, legmul, legdiv, legpow + + Notes + ----- + Unlike multiplication, division, etc., the difference of two Legendre + series is a Legendre series (without having to "reproject" the result + onto the basis set) so subtraction, just like that of "standard" + polynomials, is simply "component-wise." + + Examples + -------- + >>> from numpy.polynomial import legendre as L + >>> c1 = (1,2,3) + >>> c2 = (3,2,1) + >>> L.legsub(c1,c2) + array([-2., 0., 2.]) + >>> L.legsub(c2,c1) # -C.legsub(c1,c2) + array([ 2., 0., -2.]) + + """ + return pu._sub(c1, c2) + + +def legmulx(c): + """Multiply a Legendre series by x. + + Multiply the Legendre series `c` by x, where x is the independent + variable. + + + Parameters + ---------- + c : array_like + 1-D array of Legendre series coefficients ordered from low to + high. + + Returns + ------- + out : ndarray + Array representing the result of the multiplication. + + See Also + -------- + legadd, legmul, legdiv, legpow + + Notes + ----- + The multiplication uses the recursion relationship for Legendre + polynomials in the form + + .. math:: + + xP_i(x) = ((i + 1)*P_{i + 1}(x) + i*P_{i - 1}(x))/(2i + 1) + + Examples + -------- + >>> from numpy.polynomial import legendre as L + >>> L.legmulx([1,2,3]) + array([ 0.66666667, 2.2, 1.33333333, 1.8]) # may vary + + """ + # c is a trimmed copy + [c] = pu.as_series([c]) + # The zero series needs special treatment + if len(c) == 1 and c[0] == 0: + return c + + prd = np.empty(len(c) + 1, dtype=c.dtype) + prd[0] = c[0]*0 + prd[1] = c[0] + for i in range(1, len(c)): + j = i + 1 + k = i - 1 + s = i + j + prd[j] = (c[i]*j)/s + prd[k] += (c[i]*i)/s + return prd + + +def legmul(c1, c2): + """ + Multiply one Legendre series by another. + + Returns the product of two Legendre series `c1` * `c2`. The arguments + are sequences of coefficients, from lowest order "term" to highest, + e.g., [1,2,3] represents the series ``P_0 + 2*P_1 + 3*P_2``. + + Parameters + ---------- + c1, c2 : array_like + 1-D arrays of Legendre series coefficients ordered from low to + high. + + Returns + ------- + out : ndarray + Of Legendre series coefficients representing their product. + + See Also + -------- + legadd, legsub, legmulx, legdiv, legpow + + Notes + ----- + In general, the (polynomial) product of two C-series results in terms + that are not in the Legendre polynomial basis set. Thus, to express + the product as a Legendre series, it is necessary to "reproject" the + product onto said basis set, which may produce "unintuitive" (but + correct) results; see Examples section below. + + Examples + -------- + >>> from numpy.polynomial import legendre as L + >>> c1 = (1,2,3) + >>> c2 = (3,2) + >>> L.legmul(c1,c2) # multiplication requires "reprojection" + array([ 4.33333333, 10.4 , 11.66666667, 3.6 ]) # may vary + + """ + # s1, s2 are trimmed copies + [c1, c2] = pu.as_series([c1, c2]) + + if len(c1) > len(c2): + c = c2 + xs = c1 + else: + c = c1 + xs = c2 + + if len(c) == 1: + c0 = c[0]*xs + c1 = 0 + elif len(c) == 2: + c0 = c[0]*xs + c1 = c[1]*xs + else: + nd = len(c) + c0 = c[-2]*xs + c1 = c[-1]*xs + for i in range(3, len(c) + 1): + tmp = c0 + nd = nd - 1 + c0 = legsub(c[-i]*xs, (c1*(nd - 1))/nd) + c1 = legadd(tmp, (legmulx(c1)*(2*nd - 1))/nd) + return legadd(c0, legmulx(c1)) + + +def legdiv(c1, c2): + """ + Divide one Legendre series by another. + + Returns the quotient-with-remainder of two Legendre series + `c1` / `c2`. The arguments are sequences of coefficients from lowest + order "term" to highest, e.g., [1,2,3] represents the series + ``P_0 + 2*P_1 + 3*P_2``. + + Parameters + ---------- + c1, c2 : array_like + 1-D arrays of Legendre series coefficients ordered from low to + high. + + Returns + ------- + quo, rem : ndarrays + Of Legendre series coefficients representing the quotient and + remainder. + + See Also + -------- + legadd, legsub, legmulx, legmul, legpow + + Notes + ----- + In general, the (polynomial) division of one Legendre series by another + results in quotient and remainder terms that are not in the Legendre + polynomial basis set. Thus, to express these results as a Legendre + series, it is necessary to "reproject" the results onto the Legendre + basis set, which may produce "unintuitive" (but correct) results; see + Examples section below. + + Examples + -------- + >>> from numpy.polynomial import legendre as L + >>> c1 = (1,2,3) + >>> c2 = (3,2,1) + >>> L.legdiv(c1,c2) # quotient "intuitive," remainder not + (array([3.]), array([-8., -4.])) + >>> c2 = (0,1,2,3) + >>> L.legdiv(c2,c1) # neither "intuitive" + (array([-0.07407407, 1.66666667]), array([-1.03703704, -2.51851852])) # may vary + + """ + return pu._div(legmul, c1, c2) + + +def legpow(c, pow, maxpower=16): + """Raise a Legendre series to a power. + + Returns the Legendre series `c` raised to the power `pow`. The + argument `c` is a sequence of coefficients ordered from low to high. + i.e., [1,2,3] is the series ``P_0 + 2*P_1 + 3*P_2.`` + + Parameters + ---------- + c : array_like + 1-D array of Legendre series coefficients ordered from low to + high. + pow : integer + Power to which the series will be raised + maxpower : integer, optional + Maximum power allowed. This is mainly to limit growth of the series + to unmanageable size. Default is 16 + + Returns + ------- + coef : ndarray + Legendre series of power. + + See Also + -------- + legadd, legsub, legmulx, legmul, legdiv + + """ + return pu._pow(legmul, c, pow, maxpower) + + +def legder(c, m=1, scl=1, axis=0): + """ + Differentiate a Legendre series. + + Returns the Legendre series coefficients `c` differentiated `m` times + along `axis`. At each iteration the result is multiplied by `scl` (the + scaling factor is for use in a linear change of variable). The argument + `c` is an array of coefficients from low to high degree along each + axis, e.g., [1,2,3] represents the series ``1*L_0 + 2*L_1 + 3*L_2`` + while [[1,2],[1,2]] represents ``1*L_0(x)*L_0(y) + 1*L_1(x)*L_0(y) + + 2*L_0(x)*L_1(y) + 2*L_1(x)*L_1(y)`` if axis=0 is ``x`` and axis=1 is + ``y``. + + Parameters + ---------- + c : array_like + Array of Legendre series coefficients. If c is multidimensional the + different axis correspond to different variables with the degree in + each axis given by the corresponding index. + m : int, optional + Number of derivatives taken, must be non-negative. (Default: 1) + scl : scalar, optional + Each differentiation is multiplied by `scl`. The end result is + multiplication by ``scl**m``. This is for use in a linear change of + variable. (Default: 1) + axis : int, optional + Axis over which the derivative is taken. (Default: 0). + + .. versionadded:: 1.7.0 + + Returns + ------- + der : ndarray + Legendre series of the derivative. + + See Also + -------- + legint + + Notes + ----- + In general, the result of differentiating a Legendre series does not + resemble the same operation on a power series. Thus the result of this + function may be "unintuitive," albeit correct; see Examples section + below. + + Examples + -------- + >>> from numpy.polynomial import legendre as L + >>> c = (1,2,3,4) + >>> L.legder(c) + array([ 6., 9., 20.]) + >>> L.legder(c, 3) + array([60.]) + >>> L.legder(c, scl=-1) + array([ -6., -9., -20.]) + >>> L.legder(c, 2,-1) + array([ 9., 60.]) + + """ + c = np.array(c, ndmin=1, copy=True) + if c.dtype.char in '?bBhHiIlLqQpP': + c = c.astype(np.double) + cnt = pu._deprecate_as_int(m, "the order of derivation") + iaxis = pu._deprecate_as_int(axis, "the axis") + if cnt < 0: + raise ValueError("The order of derivation must be non-negative") + iaxis = normalize_axis_index(iaxis, c.ndim) + + if cnt == 0: + return c + + c = np.moveaxis(c, iaxis, 0) + n = len(c) + if cnt >= n: + c = c[:1]*0 + else: + for i in range(cnt): + n = n - 1 + c *= scl + der = np.empty((n,) + c.shape[1:], dtype=c.dtype) + for j in range(n, 2, -1): + der[j - 1] = (2*j - 1)*c[j] + c[j - 2] += c[j] + if n > 1: + der[1] = 3*c[2] + der[0] = c[1] + c = der + c = np.moveaxis(c, 0, iaxis) + return c + + +def legint(c, m=1, k=[], lbnd=0, scl=1, axis=0): + """ + Integrate a Legendre series. + + Returns the Legendre series coefficients `c` integrated `m` times from + `lbnd` along `axis`. At each iteration the resulting series is + **multiplied** by `scl` and an integration constant, `k`, is added. + The scaling factor is for use in a linear change of variable. ("Buyer + beware": note that, depending on what one is doing, one may want `scl` + to be the reciprocal of what one might expect; for more information, + see the Notes section below.) The argument `c` is an array of + coefficients from low to high degree along each axis, e.g., [1,2,3] + represents the series ``L_0 + 2*L_1 + 3*L_2`` while [[1,2],[1,2]] + represents ``1*L_0(x)*L_0(y) + 1*L_1(x)*L_0(y) + 2*L_0(x)*L_1(y) + + 2*L_1(x)*L_1(y)`` if axis=0 is ``x`` and axis=1 is ``y``. + + Parameters + ---------- + c : array_like + Array of Legendre series coefficients. If c is multidimensional the + different axis correspond to different variables with the degree in + each axis given by the corresponding index. + m : int, optional + Order of integration, must be positive. (Default: 1) + k : {[], list, scalar}, optional + Integration constant(s). The value of the first integral at + ``lbnd`` is the first value in the list, the value of the second + integral at ``lbnd`` is the second value, etc. If ``k == []`` (the + default), all constants are set to zero. If ``m == 1``, a single + scalar can be given instead of a list. + lbnd : scalar, optional + The lower bound of the integral. (Default: 0) + scl : scalar, optional + Following each integration the result is *multiplied* by `scl` + before the integration constant is added. (Default: 1) + axis : int, optional + Axis over which the integral is taken. (Default: 0). + + .. versionadded:: 1.7.0 + + Returns + ------- + S : ndarray + Legendre series coefficient array of the integral. + + Raises + ------ + ValueError + If ``m < 0``, ``len(k) > m``, ``np.ndim(lbnd) != 0``, or + ``np.ndim(scl) != 0``. + + See Also + -------- + legder + + Notes + ----- + Note that the result of each integration is *multiplied* by `scl`. + Why is this important to note? Say one is making a linear change of + variable :math:`u = ax + b` in an integral relative to `x`. Then + :math:`dx = du/a`, so one will need to set `scl` equal to + :math:`1/a` - perhaps not what one would have first thought. + + Also note that, in general, the result of integrating a C-series needs + to be "reprojected" onto the C-series basis set. Thus, typically, + the result of this function is "unintuitive," albeit correct; see + Examples section below. + + Examples + -------- + >>> from numpy.polynomial import legendre as L + >>> c = (1,2,3) + >>> L.legint(c) + array([ 0.33333333, 0.4 , 0.66666667, 0.6 ]) # may vary + >>> L.legint(c, 3) + array([ 1.66666667e-02, -1.78571429e-02, 4.76190476e-02, # may vary + -1.73472348e-18, 1.90476190e-02, 9.52380952e-03]) + >>> L.legint(c, k=3) + array([ 3.33333333, 0.4 , 0.66666667, 0.6 ]) # may vary + >>> L.legint(c, lbnd=-2) + array([ 7.33333333, 0.4 , 0.66666667, 0.6 ]) # may vary + >>> L.legint(c, scl=2) + array([ 0.66666667, 0.8 , 1.33333333, 1.2 ]) # may vary + + """ + c = np.array(c, ndmin=1, copy=True) + if c.dtype.char in '?bBhHiIlLqQpP': + c = c.astype(np.double) + if not np.iterable(k): + k = [k] + cnt = pu._deprecate_as_int(m, "the order of integration") + iaxis = pu._deprecate_as_int(axis, "the axis") + if cnt < 0: + raise ValueError("The order of integration must be non-negative") + if len(k) > cnt: + raise ValueError("Too many integration constants") + if np.ndim(lbnd) != 0: + raise ValueError("lbnd must be a scalar.") + if np.ndim(scl) != 0: + raise ValueError("scl must be a scalar.") + iaxis = normalize_axis_index(iaxis, c.ndim) + + if cnt == 0: + return c + + c = np.moveaxis(c, iaxis, 0) + k = list(k) + [0]*(cnt - len(k)) + for i in range(cnt): + n = len(c) + c *= scl + if n == 1 and np.all(c[0] == 0): + c[0] += k[i] + else: + tmp = np.empty((n + 1,) + c.shape[1:], dtype=c.dtype) + tmp[0] = c[0]*0 + tmp[1] = c[0] + if n > 1: + tmp[2] = c[1]/3 + for j in range(2, n): + t = c[j]/(2*j + 1) + tmp[j + 1] = t + tmp[j - 1] -= t + tmp[0] += k[i] - legval(lbnd, tmp) + c = tmp + c = np.moveaxis(c, 0, iaxis) + return c + + +def legval(x, c, tensor=True): + """ + Evaluate a Legendre series at points x. + + If `c` is of length `n + 1`, this function returns the value: + + .. math:: p(x) = c_0 * L_0(x) + c_1 * L_1(x) + ... + c_n * L_n(x) + + The parameter `x` is converted to an array only if it is a tuple or a + list, otherwise it is treated as a scalar. In either case, either `x` + or its elements must support multiplication and addition both with + themselves and with the elements of `c`. + + If `c` is a 1-D array, then `p(x)` will have the same shape as `x`. If + `c` is multidimensional, then the shape of the result depends on the + value of `tensor`. If `tensor` is true the shape will be c.shape[1:] + + x.shape. If `tensor` is false the shape will be c.shape[1:]. Note that + scalars have shape (,). + + Trailing zeros in the coefficients will be used in the evaluation, so + they should be avoided if efficiency is a concern. + + Parameters + ---------- + x : array_like, compatible object + If `x` is a list or tuple, it is converted to an ndarray, otherwise + it is left unchanged and treated as a scalar. In either case, `x` + or its elements must support addition and multiplication with + themselves and with the elements of `c`. + c : array_like + Array of coefficients ordered so that the coefficients for terms of + degree n are contained in c[n]. If `c` is multidimensional the + remaining indices enumerate multiple polynomials. In the two + dimensional case the coefficients may be thought of as stored in + the columns of `c`. + tensor : boolean, optional + If True, the shape of the coefficient array is extended with ones + on the right, one for each dimension of `x`. Scalars have dimension 0 + for this action. The result is that every column of coefficients in + `c` is evaluated for every element of `x`. If False, `x` is broadcast + over the columns of `c` for the evaluation. This keyword is useful + when `c` is multidimensional. The default value is True. + + .. versionadded:: 1.7.0 + + Returns + ------- + values : ndarray, algebra_like + The shape of the return value is described above. + + See Also + -------- + legval2d, leggrid2d, legval3d, leggrid3d + + Notes + ----- + The evaluation uses Clenshaw recursion, aka synthetic division. + + """ + c = np.array(c, ndmin=1, copy=False) + if c.dtype.char in '?bBhHiIlLqQpP': + c = c.astype(np.double) + if isinstance(x, (tuple, list)): + x = np.asarray(x) + if isinstance(x, np.ndarray) and tensor: + c = c.reshape(c.shape + (1,)*x.ndim) + + if len(c) == 1: + c0 = c[0] + c1 = 0 + elif len(c) == 2: + c0 = c[0] + c1 = c[1] + else: + nd = len(c) + c0 = c[-2] + c1 = c[-1] + for i in range(3, len(c) + 1): + tmp = c0 + nd = nd - 1 + c0 = c[-i] - (c1*(nd - 1))/nd + c1 = tmp + (c1*x*(2*nd - 1))/nd + return c0 + c1*x + + +def legval2d(x, y, c): + """ + Evaluate a 2-D Legendre series at points (x, y). + + This function returns the values: + + .. math:: p(x,y) = \\sum_{i,j} c_{i,j} * L_i(x) * L_j(y) + + The parameters `x` and `y` are converted to arrays only if they are + tuples or a lists, otherwise they are treated as a scalars and they + must have the same shape after conversion. In either case, either `x` + and `y` or their elements must support multiplication and addition both + with themselves and with the elements of `c`. + + If `c` is a 1-D array a one is implicitly appended to its shape to make + it 2-D. The shape of the result will be c.shape[2:] + x.shape. + + Parameters + ---------- + x, y : array_like, compatible objects + The two dimensional series is evaluated at the points `(x, y)`, + where `x` and `y` must have the same shape. If `x` or `y` is a list + or tuple, it is first converted to an ndarray, otherwise it is left + unchanged and if it isn't an ndarray it is treated as a scalar. + c : array_like + Array of coefficients ordered so that the coefficient of the term + of multi-degree i,j is contained in ``c[i,j]``. If `c` has + dimension greater than two the remaining indices enumerate multiple + sets of coefficients. + + Returns + ------- + values : ndarray, compatible object + The values of the two dimensional Legendre series at points formed + from pairs of corresponding values from `x` and `y`. + + See Also + -------- + legval, leggrid2d, legval3d, leggrid3d + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + return pu._valnd(legval, c, x, y) + + +def leggrid2d(x, y, c): + """ + Evaluate a 2-D Legendre series on the Cartesian product of x and y. + + This function returns the values: + + .. math:: p(a,b) = \\sum_{i,j} c_{i,j} * L_i(a) * L_j(b) + + where the points `(a, b)` consist of all pairs formed by taking + `a` from `x` and `b` from `y`. The resulting points form a grid with + `x` in the first dimension and `y` in the second. + + The parameters `x` and `y` are converted to arrays only if they are + tuples or a lists, otherwise they are treated as a scalars. In either + case, either `x` and `y` or their elements must support multiplication + and addition both with themselves and with the elements of `c`. + + If `c` has fewer than two dimensions, ones are implicitly appended to + its shape to make it 2-D. The shape of the result will be c.shape[2:] + + x.shape + y.shape. + + Parameters + ---------- + x, y : array_like, compatible objects + The two dimensional series is evaluated at the points in the + Cartesian product of `x` and `y`. If `x` or `y` is a list or + tuple, it is first converted to an ndarray, otherwise it is left + unchanged and, if it isn't an ndarray, it is treated as a scalar. + c : array_like + Array of coefficients ordered so that the coefficient of the term of + multi-degree i,j is contained in `c[i,j]`. If `c` has dimension + greater than two the remaining indices enumerate multiple sets of + coefficients. + + Returns + ------- + values : ndarray, compatible object + The values of the two dimensional Chebyshev series at points in the + Cartesian product of `x` and `y`. + + See Also + -------- + legval, legval2d, legval3d, leggrid3d + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + return pu._gridnd(legval, c, x, y) + + +def legval3d(x, y, z, c): + """ + Evaluate a 3-D Legendre series at points (x, y, z). + + This function returns the values: + + .. math:: p(x,y,z) = \\sum_{i,j,k} c_{i,j,k} * L_i(x) * L_j(y) * L_k(z) + + The parameters `x`, `y`, and `z` are converted to arrays only if + they are tuples or a lists, otherwise they are treated as a scalars and + they must have the same shape after conversion. In either case, either + `x`, `y`, and `z` or their elements must support multiplication and + addition both with themselves and with the elements of `c`. + + If `c` has fewer than 3 dimensions, ones are implicitly appended to its + shape to make it 3-D. The shape of the result will be c.shape[3:] + + x.shape. + + Parameters + ---------- + x, y, z : array_like, compatible object + The three dimensional series is evaluated at the points + `(x, y, z)`, where `x`, `y`, and `z` must have the same shape. If + any of `x`, `y`, or `z` is a list or tuple, it is first converted + to an ndarray, otherwise it is left unchanged and if it isn't an + ndarray it is treated as a scalar. + c : array_like + Array of coefficients ordered so that the coefficient of the term of + multi-degree i,j,k is contained in ``c[i,j,k]``. If `c` has dimension + greater than 3 the remaining indices enumerate multiple sets of + coefficients. + + Returns + ------- + values : ndarray, compatible object + The values of the multidimensional polynomial on points formed with + triples of corresponding values from `x`, `y`, and `z`. + + See Also + -------- + legval, legval2d, leggrid2d, leggrid3d + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + return pu._valnd(legval, c, x, y, z) + + +def leggrid3d(x, y, z, c): + """ + Evaluate a 3-D Legendre series on the Cartesian product of x, y, and z. + + This function returns the values: + + .. math:: p(a,b,c) = \\sum_{i,j,k} c_{i,j,k} * L_i(a) * L_j(b) * L_k(c) + + where the points `(a, b, c)` consist of all triples formed by taking + `a` from `x`, `b` from `y`, and `c` from `z`. The resulting points form + a grid with `x` in the first dimension, `y` in the second, and `z` in + the third. + + The parameters `x`, `y`, and `z` are converted to arrays only if they + are tuples or a lists, otherwise they are treated as a scalars. In + either case, either `x`, `y`, and `z` or their elements must support + multiplication and addition both with themselves and with the elements + of `c`. + + If `c` has fewer than three dimensions, ones are implicitly appended to + its shape to make it 3-D. The shape of the result will be c.shape[3:] + + x.shape + y.shape + z.shape. + + Parameters + ---------- + x, y, z : array_like, compatible objects + The three dimensional series is evaluated at the points in the + Cartesian product of `x`, `y`, and `z`. If `x`,`y`, or `z` is a + list or tuple, it is first converted to an ndarray, otherwise it is + left unchanged and, if it isn't an ndarray, it is treated as a + scalar. + c : array_like + Array of coefficients ordered so that the coefficients for terms of + degree i,j are contained in ``c[i,j]``. If `c` has dimension + greater than two the remaining indices enumerate multiple sets of + coefficients. + + Returns + ------- + values : ndarray, compatible object + The values of the two dimensional polynomial at points in the Cartesian + product of `x` and `y`. + + See Also + -------- + legval, legval2d, leggrid2d, legval3d + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + return pu._gridnd(legval, c, x, y, z) + + +def legvander(x, deg): + """Pseudo-Vandermonde matrix of given degree. + + Returns the pseudo-Vandermonde matrix of degree `deg` and sample points + `x`. The pseudo-Vandermonde matrix is defined by + + .. math:: V[..., i] = L_i(x) + + where `0 <= i <= deg`. The leading indices of `V` index the elements of + `x` and the last index is the degree of the Legendre polynomial. + + If `c` is a 1-D array of coefficients of length `n + 1` and `V` is the + array ``V = legvander(x, n)``, then ``np.dot(V, c)`` and + ``legval(x, c)`` are the same up to roundoff. This equivalence is + useful both for least squares fitting and for the evaluation of a large + number of Legendre series of the same degree and sample points. + + Parameters + ---------- + x : array_like + Array of points. The dtype is converted to float64 or complex128 + depending on whether any of the elements are complex. If `x` is + scalar it is converted to a 1-D array. + deg : int + Degree of the resulting matrix. + + Returns + ------- + vander : ndarray + The pseudo-Vandermonde matrix. The shape of the returned matrix is + ``x.shape + (deg + 1,)``, where The last index is the degree of the + corresponding Legendre polynomial. The dtype will be the same as + the converted `x`. + + """ + ideg = pu._deprecate_as_int(deg, "deg") + if ideg < 0: + raise ValueError("deg must be non-negative") + + x = np.array(x, copy=False, ndmin=1) + 0.0 + dims = (ideg + 1,) + x.shape + dtyp = x.dtype + v = np.empty(dims, dtype=dtyp) + # Use forward recursion to generate the entries. This is not as accurate + # as reverse recursion in this application but it is more efficient. + v[0] = x*0 + 1 + if ideg > 0: + v[1] = x + for i in range(2, ideg + 1): + v[i] = (v[i-1]*x*(2*i - 1) - v[i-2]*(i - 1))/i + return np.moveaxis(v, 0, -1) + + +def legvander2d(x, y, deg): + """Pseudo-Vandermonde matrix of given degrees. + + Returns the pseudo-Vandermonde matrix of degrees `deg` and sample + points `(x, y)`. The pseudo-Vandermonde matrix is defined by + + .. math:: V[..., (deg[1] + 1)*i + j] = L_i(x) * L_j(y), + + where `0 <= i <= deg[0]` and `0 <= j <= deg[1]`. The leading indices of + `V` index the points `(x, y)` and the last index encodes the degrees of + the Legendre polynomials. + + If ``V = legvander2d(x, y, [xdeg, ydeg])``, then the columns of `V` + correspond to the elements of a 2-D coefficient array `c` of shape + (xdeg + 1, ydeg + 1) in the order + + .. math:: c_{00}, c_{01}, c_{02} ... , c_{10}, c_{11}, c_{12} ... + + and ``np.dot(V, c.flat)`` and ``legval2d(x, y, c)`` will be the same + up to roundoff. This equivalence is useful both for least squares + fitting and for the evaluation of a large number of 2-D Legendre + series of the same degrees and sample points. + + Parameters + ---------- + x, y : array_like + Arrays of point coordinates, all of the same shape. The dtypes + will be converted to either float64 or complex128 depending on + whether any of the elements are complex. Scalars are converted to + 1-D arrays. + deg : list of ints + List of maximum degrees of the form [x_deg, y_deg]. + + Returns + ------- + vander2d : ndarray + The shape of the returned matrix is ``x.shape + (order,)``, where + :math:`order = (deg[0]+1)*(deg[1]+1)`. The dtype will be the same + as the converted `x` and `y`. + + See Also + -------- + legvander, legvander3d, legval2d, legval3d + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + return pu._vander_nd_flat((legvander, legvander), (x, y), deg) + + +def legvander3d(x, y, z, deg): + """Pseudo-Vandermonde matrix of given degrees. + + Returns the pseudo-Vandermonde matrix of degrees `deg` and sample + points `(x, y, z)`. If `l, m, n` are the given degrees in `x, y, z`, + then The pseudo-Vandermonde matrix is defined by + + .. math:: V[..., (m+1)(n+1)i + (n+1)j + k] = L_i(x)*L_j(y)*L_k(z), + + where `0 <= i <= l`, `0 <= j <= m`, and `0 <= j <= n`. The leading + indices of `V` index the points `(x, y, z)` and the last index encodes + the degrees of the Legendre polynomials. + + If ``V = legvander3d(x, y, z, [xdeg, ydeg, zdeg])``, then the columns + of `V` correspond to the elements of a 3-D coefficient array `c` of + shape (xdeg + 1, ydeg + 1, zdeg + 1) in the order + + .. math:: c_{000}, c_{001}, c_{002},... , c_{010}, c_{011}, c_{012},... + + and ``np.dot(V, c.flat)`` and ``legval3d(x, y, z, c)`` will be the + same up to roundoff. This equivalence is useful both for least squares + fitting and for the evaluation of a large number of 3-D Legendre + series of the same degrees and sample points. + + Parameters + ---------- + x, y, z : array_like + Arrays of point coordinates, all of the same shape. The dtypes will + be converted to either float64 or complex128 depending on whether + any of the elements are complex. Scalars are converted to 1-D + arrays. + deg : list of ints + List of maximum degrees of the form [x_deg, y_deg, z_deg]. + + Returns + ------- + vander3d : ndarray + The shape of the returned matrix is ``x.shape + (order,)``, where + :math:`order = (deg[0]+1)*(deg[1]+1)*(deg[2]+1)`. The dtype will + be the same as the converted `x`, `y`, and `z`. + + See Also + -------- + legvander, legvander3d, legval2d, legval3d + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + return pu._vander_nd_flat((legvander, legvander, legvander), (x, y, z), deg) + + +def legfit(x, y, deg, rcond=None, full=False, w=None): + """ + Least squares fit of Legendre series to data. + + Return the coefficients of a Legendre series of degree `deg` that is the + least squares fit to the data values `y` given at points `x`. If `y` is + 1-D the returned coefficients will also be 1-D. If `y` is 2-D multiple + fits are done, one for each column of `y`, and the resulting + coefficients are stored in the corresponding columns of a 2-D return. + The fitted polynomial(s) are in the form + + .. math:: p(x) = c_0 + c_1 * L_1(x) + ... + c_n * L_n(x), + + where `n` is `deg`. + + Parameters + ---------- + x : array_like, shape (M,) + x-coordinates of the M sample points ``(x[i], y[i])``. + y : array_like, shape (M,) or (M, K) + y-coordinates of the sample points. Several data sets of sample + points sharing the same x-coordinates can be fitted at once by + passing in a 2D-array that contains one dataset per column. + deg : int or 1-D array_like + Degree(s) of the fitting polynomials. If `deg` is a single integer + all terms up to and including the `deg`'th term are included in the + fit. For NumPy versions >= 1.11.0 a list of integers specifying the + degrees of the terms to include may be used instead. + rcond : float, optional + Relative condition number of the fit. Singular values smaller than + this relative to the largest singular value will be ignored. The + default value is len(x)*eps, where eps is the relative precision of + the float type, about 2e-16 in most cases. + full : bool, optional + Switch determining nature of return value. When it is False (the + default) just the coefficients are returned, when True diagnostic + information from the singular value decomposition is also returned. + w : array_like, shape (`M`,), optional + Weights. If not None, the weight ``w[i]`` applies to the unsquared + residual ``y[i] - y_hat[i]`` at ``x[i]``. Ideally the weights are + chosen so that the errors of the products ``w[i]*y[i]`` all have the + same variance. When using inverse-variance weighting, use + ``w[i] = 1/sigma(y[i])``. The default value is None. + + .. versionadded:: 1.5.0 + + Returns + ------- + coef : ndarray, shape (M,) or (M, K) + Legendre coefficients ordered from low to high. If `y` was + 2-D, the coefficients for the data in column k of `y` are in + column `k`. If `deg` is specified as a list, coefficients for + terms not included in the fit are set equal to zero in the + returned `coef`. + + [residuals, rank, singular_values, rcond] : list + These values are only returned if ``full == True`` + + - residuals -- sum of squared residuals of the least squares fit + - rank -- the numerical rank of the scaled Vandermonde matrix + - singular_values -- singular values of the scaled Vandermonde matrix + - rcond -- value of `rcond`. + + For more details, see `numpy.linalg.lstsq`. + + Warns + ----- + RankWarning + The rank of the coefficient matrix in the least-squares fit is + deficient. The warning is only raised if ``full == False``. The + warnings can be turned off by + + >>> import warnings + >>> warnings.simplefilter('ignore', np.RankWarning) + + See Also + -------- + numpy.polynomial.polynomial.polyfit + numpy.polynomial.chebyshev.chebfit + numpy.polynomial.laguerre.lagfit + numpy.polynomial.hermite.hermfit + numpy.polynomial.hermite_e.hermefit + legval : Evaluates a Legendre series. + legvander : Vandermonde matrix of Legendre series. + legweight : Legendre weight function (= 1). + numpy.linalg.lstsq : Computes a least-squares fit from the matrix. + scipy.interpolate.UnivariateSpline : Computes spline fits. + + Notes + ----- + The solution is the coefficients of the Legendre series `p` that + minimizes the sum of the weighted squared errors + + .. math:: E = \\sum_j w_j^2 * |y_j - p(x_j)|^2, + + where :math:`w_j` are the weights. This problem is solved by setting up + as the (typically) overdetermined matrix equation + + .. math:: V(x) * c = w * y, + + where `V` is the weighted pseudo Vandermonde matrix of `x`, `c` are the + coefficients to be solved for, `w` are the weights, and `y` are the + observed values. This equation is then solved using the singular value + decomposition of `V`. + + If some of the singular values of `V` are so small that they are + neglected, then a `RankWarning` will be issued. This means that the + coefficient values may be poorly determined. Using a lower order fit + will usually get rid of the warning. The `rcond` parameter can also be + set to a value smaller than its default, but the resulting fit may be + spurious and have large contributions from roundoff error. + + Fits using Legendre series are usually better conditioned than fits + using power series, but much can depend on the distribution of the + sample points and the smoothness of the data. If the quality of the fit + is inadequate splines may be a good alternative. + + References + ---------- + .. [1] Wikipedia, "Curve fitting", + https://en.wikipedia.org/wiki/Curve_fitting + + Examples + -------- + + """ + return pu._fit(legvander, x, y, deg, rcond, full, w) + + +def legcompanion(c): + """Return the scaled companion matrix of c. + + The basis polynomials are scaled so that the companion matrix is + symmetric when `c` is an Legendre basis polynomial. This provides + better eigenvalue estimates than the unscaled case and for basis + polynomials the eigenvalues are guaranteed to be real if + `numpy.linalg.eigvalsh` is used to obtain them. + + Parameters + ---------- + c : array_like + 1-D array of Legendre series coefficients ordered from low to high + degree. + + Returns + ------- + mat : ndarray + Scaled companion matrix of dimensions (deg, deg). + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + # c is a trimmed copy + [c] = pu.as_series([c]) + if len(c) < 2: + raise ValueError('Series must have maximum degree of at least 1.') + if len(c) == 2: + return np.array([[-c[0]/c[1]]]) + + n = len(c) - 1 + mat = np.zeros((n, n), dtype=c.dtype) + scl = 1./np.sqrt(2*np.arange(n) + 1) + top = mat.reshape(-1)[1::n+1] + bot = mat.reshape(-1)[n::n+1] + top[...] = np.arange(1, n)*scl[:n-1]*scl[1:n] + bot[...] = top + mat[:, -1] -= (c[:-1]/c[-1])*(scl/scl[-1])*(n/(2*n - 1)) + return mat + + +def legroots(c): + """ + Compute the roots of a Legendre series. + + Return the roots (a.k.a. "zeros") of the polynomial + + .. math:: p(x) = \\sum_i c[i] * L_i(x). + + Parameters + ---------- + c : 1-D array_like + 1-D array of coefficients. + + Returns + ------- + out : ndarray + Array of the roots of the series. If all the roots are real, + then `out` is also real, otherwise it is complex. + + See Also + -------- + numpy.polynomial.polynomial.polyroots + numpy.polynomial.chebyshev.chebroots + numpy.polynomial.laguerre.lagroots + numpy.polynomial.hermite.hermroots + numpy.polynomial.hermite_e.hermeroots + + Notes + ----- + The root estimates are obtained as the eigenvalues of the companion + matrix, Roots far from the origin of the complex plane may have large + errors due to the numerical instability of the series for such values. + Roots with multiplicity greater than 1 will also show larger errors as + the value of the series near such points is relatively insensitive to + errors in the roots. Isolated roots near the origin can be improved by + a few iterations of Newton's method. + + The Legendre series basis polynomials aren't powers of ``x`` so the + results of this function may seem unintuitive. + + Examples + -------- + >>> import numpy.polynomial.legendre as leg + >>> leg.legroots((1, 2, 3, 4)) # 4L_3 + 3L_2 + 2L_1 + 1L_0, all real roots + array([-0.85099543, -0.11407192, 0.51506735]) # may vary + + """ + # c is a trimmed copy + [c] = pu.as_series([c]) + if len(c) < 2: + return np.array([], dtype=c.dtype) + if len(c) == 2: + return np.array([-c[0]/c[1]]) + + # rotated companion matrix reduces error + m = legcompanion(c)[::-1,::-1] + r = la.eigvals(m) + r.sort() + return r + + +def leggauss(deg): + """ + Gauss-Legendre quadrature. + + Computes the sample points and weights for Gauss-Legendre quadrature. + These sample points and weights will correctly integrate polynomials of + degree :math:`2*deg - 1` or less over the interval :math:`[-1, 1]` with + the weight function :math:`f(x) = 1`. + + Parameters + ---------- + deg : int + Number of sample points and weights. It must be >= 1. + + Returns + ------- + x : ndarray + 1-D ndarray containing the sample points. + y : ndarray + 1-D ndarray containing the weights. + + Notes + ----- + + .. versionadded:: 1.7.0 + + The results have only been tested up to degree 100, higher degrees may + be problematic. The weights are determined by using the fact that + + .. math:: w_k = c / (L'_n(x_k) * L_{n-1}(x_k)) + + where :math:`c` is a constant independent of :math:`k` and :math:`x_k` + is the k'th root of :math:`L_n`, and then scaling the results to get + the right value when integrating 1. + + """ + ideg = pu._deprecate_as_int(deg, "deg") + if ideg <= 0: + raise ValueError("deg must be a positive integer") + + # first approximation of roots. We use the fact that the companion + # matrix is symmetric in this case in order to obtain better zeros. + c = np.array([0]*deg + [1]) + m = legcompanion(c) + x = la.eigvalsh(m) + + # improve roots by one application of Newton + dy = legval(x, c) + df = legval(x, legder(c)) + x -= dy/df + + # compute the weights. We scale the factor to avoid possible numerical + # overflow. + fm = legval(x, c[1:]) + fm /= np.abs(fm).max() + df /= np.abs(df).max() + w = 1/(fm * df) + + # for Legendre we can also symmetrize + w = (w + w[::-1])/2 + x = (x - x[::-1])/2 + + # scale w to get the right value + w *= 2. / w.sum() + + return x, w + + +def legweight(x): + """ + Weight function of the Legendre polynomials. + + The weight function is :math:`1` and the interval of integration is + :math:`[-1, 1]`. The Legendre polynomials are orthogonal, but not + normalized, with respect to this weight function. + + Parameters + ---------- + x : array_like + Values at which the weight function will be computed. + + Returns + ------- + w : ndarray + The weight function at `x`. + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + w = x*0.0 + 1.0 + return w + +# +# Legendre series class +# + +class Legendre(ABCPolyBase): + """A Legendre series class. + + The Legendre class provides the standard Python numerical methods + '+', '-', '*', '//', '%', 'divmod', '**', and '()' as well as the + attributes and methods listed in the `ABCPolyBase` documentation. + + Parameters + ---------- + coef : array_like + Legendre coefficients in order of increasing degree, i.e., + ``(1, 2, 3)`` gives ``1*P_0(x) + 2*P_1(x) + 3*P_2(x)``. + domain : (2,) array_like, optional + Domain to use. The interval ``[domain[0], domain[1]]`` is mapped + to the interval ``[window[0], window[1]]`` by shifting and scaling. + The default value is [-1, 1]. + window : (2,) array_like, optional + Window, see `domain` for its use. The default value is [-1, 1]. + + .. versionadded:: 1.6.0 + symbol : str, optional + Symbol used to represent the independent variable in string + representations of the polynomial expression, e.g. for printing. + The symbol must be a valid Python identifier. Default value is 'x'. + + .. versionadded:: 1.24 + + """ + # Virtual Functions + _add = staticmethod(legadd) + _sub = staticmethod(legsub) + _mul = staticmethod(legmul) + _div = staticmethod(legdiv) + _pow = staticmethod(legpow) + _val = staticmethod(legval) + _int = staticmethod(legint) + _der = staticmethod(legder) + _fit = staticmethod(legfit) + _line = staticmethod(legline) + _roots = staticmethod(legroots) + _fromroots = staticmethod(legfromroots) + + # Virtual properties + domain = np.array(legdomain) + window = np.array(legdomain) + basis_name = 'P' diff --git a/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/legendre.pyi b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/legendre.pyi new file mode 100644 index 0000000000000000000000000000000000000000..63a1c3f3a1f89c2c2da61e385f7dba1e7be16c06 --- /dev/null +++ b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/legendre.pyi @@ -0,0 +1,46 @@ +from typing import Any + +from numpy import ndarray, dtype, int_ +from numpy.polynomial._polybase import ABCPolyBase +from numpy.polynomial.polyutils import trimcoef + +__all__: list[str] + +legtrim = trimcoef + +def poly2leg(pol): ... +def leg2poly(c): ... + +legdomain: ndarray[Any, dtype[int_]] +legzero: ndarray[Any, dtype[int_]] +legone: ndarray[Any, dtype[int_]] +legx: ndarray[Any, dtype[int_]] + +def legline(off, scl): ... +def legfromroots(roots): ... +def legadd(c1, c2): ... +def legsub(c1, c2): ... +def legmulx(c): ... +def legmul(c1, c2): ... +def legdiv(c1, c2): ... +def legpow(c, pow, maxpower=...): ... +def legder(c, m=..., scl=..., axis=...): ... +def legint(c, m=..., k = ..., lbnd=..., scl=..., axis=...): ... +def legval(x, c, tensor=...): ... +def legval2d(x, y, c): ... +def leggrid2d(x, y, c): ... +def legval3d(x, y, z, c): ... +def leggrid3d(x, y, z, c): ... +def legvander(x, deg): ... +def legvander2d(x, y, deg): ... +def legvander3d(x, y, z, deg): ... +def legfit(x, y, deg, rcond=..., full=..., w=...): ... +def legcompanion(c): ... +def legroots(c): ... +def leggauss(deg): ... +def legweight(x): ... + +class Legendre(ABCPolyBase): + domain: Any + window: Any + basis_name: Any diff --git a/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/polynomial.py b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/polynomial.py new file mode 100644 index 0000000000000000000000000000000000000000..ceadff0bf4ed32f8bbbb9f208bf4d84946efe195 --- /dev/null +++ b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/polynomial.py @@ -0,0 +1,1542 @@ +""" +================================================= +Power Series (:mod:`numpy.polynomial.polynomial`) +================================================= + +This module provides a number of objects (mostly functions) useful for +dealing with polynomials, including a `Polynomial` class that +encapsulates the usual arithmetic operations. (General information +on how this module represents and works with polynomial objects is in +the docstring for its "parent" sub-package, `numpy.polynomial`). + +Classes +------- +.. autosummary:: + :toctree: generated/ + + Polynomial + +Constants +--------- +.. autosummary:: + :toctree: generated/ + + polydomain + polyzero + polyone + polyx + +Arithmetic +---------- +.. autosummary:: + :toctree: generated/ + + polyadd + polysub + polymulx + polymul + polydiv + polypow + polyval + polyval2d + polyval3d + polygrid2d + polygrid3d + +Calculus +-------- +.. autosummary:: + :toctree: generated/ + + polyder + polyint + +Misc Functions +-------------- +.. autosummary:: + :toctree: generated/ + + polyfromroots + polyroots + polyvalfromroots + polyvander + polyvander2d + polyvander3d + polycompanion + polyfit + polytrim + polyline + +See Also +-------- +`numpy.polynomial` + +""" +__all__ = [ + 'polyzero', 'polyone', 'polyx', 'polydomain', 'polyline', 'polyadd', + 'polysub', 'polymulx', 'polymul', 'polydiv', 'polypow', 'polyval', + 'polyvalfromroots', 'polyder', 'polyint', 'polyfromroots', 'polyvander', + 'polyfit', 'polytrim', 'polyroots', 'Polynomial', 'polyval2d', 'polyval3d', + 'polygrid2d', 'polygrid3d', 'polyvander2d', 'polyvander3d'] + +import numpy as np +import numpy.linalg as la +from numpy.core.multiarray import normalize_axis_index + +from . import polyutils as pu +from ._polybase import ABCPolyBase + +polytrim = pu.trimcoef + +# +# These are constant arrays are of integer type so as to be compatible +# with the widest range of other types, such as Decimal. +# + +# Polynomial default domain. +polydomain = np.array([-1, 1]) + +# Polynomial coefficients representing zero. +polyzero = np.array([0]) + +# Polynomial coefficients representing one. +polyone = np.array([1]) + +# Polynomial coefficients representing the identity x. +polyx = np.array([0, 1]) + +# +# Polynomial series functions +# + + +def polyline(off, scl): + """ + Returns an array representing a linear polynomial. + + Parameters + ---------- + off, scl : scalars + The "y-intercept" and "slope" of the line, respectively. + + Returns + ------- + y : ndarray + This module's representation of the linear polynomial ``off + + scl*x``. + + See Also + -------- + numpy.polynomial.chebyshev.chebline + numpy.polynomial.legendre.legline + numpy.polynomial.laguerre.lagline + numpy.polynomial.hermite.hermline + numpy.polynomial.hermite_e.hermeline + + Examples + -------- + >>> from numpy.polynomial import polynomial as P + >>> P.polyline(1,-1) + array([ 1, -1]) + >>> P.polyval(1, P.polyline(1,-1)) # should be 0 + 0.0 + + """ + if scl != 0: + return np.array([off, scl]) + else: + return np.array([off]) + + +def polyfromroots(roots): + """ + Generate a monic polynomial with given roots. + + Return the coefficients of the polynomial + + .. math:: p(x) = (x - r_0) * (x - r_1) * ... * (x - r_n), + + where the ``r_n`` are the roots specified in `roots`. If a zero has + multiplicity n, then it must appear in `roots` n times. For instance, + if 2 is a root of multiplicity three and 3 is a root of multiplicity 2, + then `roots` looks something like [2, 2, 2, 3, 3]. The roots can appear + in any order. + + If the returned coefficients are `c`, then + + .. math:: p(x) = c_0 + c_1 * x + ... + x^n + + The coefficient of the last term is 1 for monic polynomials in this + form. + + Parameters + ---------- + roots : array_like + Sequence containing the roots. + + Returns + ------- + out : ndarray + 1-D array of the polynomial's coefficients If all the roots are + real, then `out` is also real, otherwise it is complex. (see + Examples below). + + See Also + -------- + numpy.polynomial.chebyshev.chebfromroots + numpy.polynomial.legendre.legfromroots + numpy.polynomial.laguerre.lagfromroots + numpy.polynomial.hermite.hermfromroots + numpy.polynomial.hermite_e.hermefromroots + + Notes + ----- + The coefficients are determined by multiplying together linear factors + of the form ``(x - r_i)``, i.e. + + .. math:: p(x) = (x - r_0) (x - r_1) ... (x - r_n) + + where ``n == len(roots) - 1``; note that this implies that ``1`` is always + returned for :math:`a_n`. + + Examples + -------- + >>> from numpy.polynomial import polynomial as P + >>> P.polyfromroots((-1,0,1)) # x(x - 1)(x + 1) = x^3 - x + array([ 0., -1., 0., 1.]) + >>> j = complex(0,1) + >>> P.polyfromroots((-j,j)) # complex returned, though values are real + array([1.+0.j, 0.+0.j, 1.+0.j]) + + """ + return pu._fromroots(polyline, polymul, roots) + + +def polyadd(c1, c2): + """ + Add one polynomial to another. + + Returns the sum of two polynomials `c1` + `c2`. The arguments are + sequences of coefficients from lowest order term to highest, i.e., + [1,2,3] represents the polynomial ``1 + 2*x + 3*x**2``. + + Parameters + ---------- + c1, c2 : array_like + 1-D arrays of polynomial coefficients ordered from low to high. + + Returns + ------- + out : ndarray + The coefficient array representing their sum. + + See Also + -------- + polysub, polymulx, polymul, polydiv, polypow + + Examples + -------- + >>> from numpy.polynomial import polynomial as P + >>> c1 = (1,2,3) + >>> c2 = (3,2,1) + >>> sum = P.polyadd(c1,c2); sum + array([4., 4., 4.]) + >>> P.polyval(2, sum) # 4 + 4(2) + 4(2**2) + 28.0 + + """ + return pu._add(c1, c2) + + +def polysub(c1, c2): + """ + Subtract one polynomial from another. + + Returns the difference of two polynomials `c1` - `c2`. The arguments + are sequences of coefficients from lowest order term to highest, i.e., + [1,2,3] represents the polynomial ``1 + 2*x + 3*x**2``. + + Parameters + ---------- + c1, c2 : array_like + 1-D arrays of polynomial coefficients ordered from low to + high. + + Returns + ------- + out : ndarray + Of coefficients representing their difference. + + See Also + -------- + polyadd, polymulx, polymul, polydiv, polypow + + Examples + -------- + >>> from numpy.polynomial import polynomial as P + >>> c1 = (1,2,3) + >>> c2 = (3,2,1) + >>> P.polysub(c1,c2) + array([-2., 0., 2.]) + >>> P.polysub(c2,c1) # -P.polysub(c1,c2) + array([ 2., 0., -2.]) + + """ + return pu._sub(c1, c2) + + +def polymulx(c): + """Multiply a polynomial by x. + + Multiply the polynomial `c` by x, where x is the independent + variable. + + + Parameters + ---------- + c : array_like + 1-D array of polynomial coefficients ordered from low to + high. + + Returns + ------- + out : ndarray + Array representing the result of the multiplication. + + See Also + -------- + polyadd, polysub, polymul, polydiv, polypow + + Notes + ----- + + .. versionadded:: 1.5.0 + + """ + # c is a trimmed copy + [c] = pu.as_series([c]) + # The zero series needs special treatment + if len(c) == 1 and c[0] == 0: + return c + + prd = np.empty(len(c) + 1, dtype=c.dtype) + prd[0] = c[0]*0 + prd[1:] = c + return prd + + +def polymul(c1, c2): + """ + Multiply one polynomial by another. + + Returns the product of two polynomials `c1` * `c2`. The arguments are + sequences of coefficients, from lowest order term to highest, e.g., + [1,2,3] represents the polynomial ``1 + 2*x + 3*x**2.`` + + Parameters + ---------- + c1, c2 : array_like + 1-D arrays of coefficients representing a polynomial, relative to the + "standard" basis, and ordered from lowest order term to highest. + + Returns + ------- + out : ndarray + Of the coefficients of their product. + + See Also + -------- + polyadd, polysub, polymulx, polydiv, polypow + + Examples + -------- + >>> from numpy.polynomial import polynomial as P + >>> c1 = (1,2,3) + >>> c2 = (3,2,1) + >>> P.polymul(c1,c2) + array([ 3., 8., 14., 8., 3.]) + + """ + # c1, c2 are trimmed copies + [c1, c2] = pu.as_series([c1, c2]) + ret = np.convolve(c1, c2) + return pu.trimseq(ret) + + +def polydiv(c1, c2): + """ + Divide one polynomial by another. + + Returns the quotient-with-remainder of two polynomials `c1` / `c2`. + The arguments are sequences of coefficients, from lowest order term + to highest, e.g., [1,2,3] represents ``1 + 2*x + 3*x**2``. + + Parameters + ---------- + c1, c2 : array_like + 1-D arrays of polynomial coefficients ordered from low to high. + + Returns + ------- + [quo, rem] : ndarrays + Of coefficient series representing the quotient and remainder. + + See Also + -------- + polyadd, polysub, polymulx, polymul, polypow + + Examples + -------- + >>> from numpy.polynomial import polynomial as P + >>> c1 = (1,2,3) + >>> c2 = (3,2,1) + >>> P.polydiv(c1,c2) + (array([3.]), array([-8., -4.])) + >>> P.polydiv(c2,c1) + (array([ 0.33333333]), array([ 2.66666667, 1.33333333])) # may vary + + """ + # c1, c2 are trimmed copies + [c1, c2] = pu.as_series([c1, c2]) + if c2[-1] == 0: + raise ZeroDivisionError() + + # note: this is more efficient than `pu._div(polymul, c1, c2)` + lc1 = len(c1) + lc2 = len(c2) + if lc1 < lc2: + return c1[:1]*0, c1 + elif lc2 == 1: + return c1/c2[-1], c1[:1]*0 + else: + dlen = lc1 - lc2 + scl = c2[-1] + c2 = c2[:-1]/scl + i = dlen + j = lc1 - 1 + while i >= 0: + c1[i:j] -= c2*c1[j] + i -= 1 + j -= 1 + return c1[j+1:]/scl, pu.trimseq(c1[:j+1]) + + +def polypow(c, pow, maxpower=None): + """Raise a polynomial to a power. + + Returns the polynomial `c` raised to the power `pow`. The argument + `c` is a sequence of coefficients ordered from low to high. i.e., + [1,2,3] is the series ``1 + 2*x + 3*x**2.`` + + Parameters + ---------- + c : array_like + 1-D array of array of series coefficients ordered from low to + high degree. + pow : integer + Power to which the series will be raised + maxpower : integer, optional + Maximum power allowed. This is mainly to limit growth of the series + to unmanageable size. Default is 16 + + Returns + ------- + coef : ndarray + Power series of power. + + See Also + -------- + polyadd, polysub, polymulx, polymul, polydiv + + Examples + -------- + >>> from numpy.polynomial import polynomial as P + >>> P.polypow([1,2,3], 2) + array([ 1., 4., 10., 12., 9.]) + + """ + # note: this is more efficient than `pu._pow(polymul, c1, c2)`, as it + # avoids calling `as_series` repeatedly + return pu._pow(np.convolve, c, pow, maxpower) + + +def polyder(c, m=1, scl=1, axis=0): + """ + Differentiate a polynomial. + + Returns the polynomial coefficients `c` differentiated `m` times along + `axis`. At each iteration the result is multiplied by `scl` (the + scaling factor is for use in a linear change of variable). The + argument `c` is an array of coefficients from low to high degree along + each axis, e.g., [1,2,3] represents the polynomial ``1 + 2*x + 3*x**2`` + while [[1,2],[1,2]] represents ``1 + 1*x + 2*y + 2*x*y`` if axis=0 is + ``x`` and axis=1 is ``y``. + + Parameters + ---------- + c : array_like + Array of polynomial coefficients. If c is multidimensional the + different axis correspond to different variables with the degree + in each axis given by the corresponding index. + m : int, optional + Number of derivatives taken, must be non-negative. (Default: 1) + scl : scalar, optional + Each differentiation is multiplied by `scl`. The end result is + multiplication by ``scl**m``. This is for use in a linear change + of variable. (Default: 1) + axis : int, optional + Axis over which the derivative is taken. (Default: 0). + + .. versionadded:: 1.7.0 + + Returns + ------- + der : ndarray + Polynomial coefficients of the derivative. + + See Also + -------- + polyint + + Examples + -------- + >>> from numpy.polynomial import polynomial as P + >>> c = (1,2,3,4) # 1 + 2x + 3x**2 + 4x**3 + >>> P.polyder(c) # (d/dx)(c) = 2 + 6x + 12x**2 + array([ 2., 6., 12.]) + >>> P.polyder(c,3) # (d**3/dx**3)(c) = 24 + array([24.]) + >>> P.polyder(c,scl=-1) # (d/d(-x))(c) = -2 - 6x - 12x**2 + array([ -2., -6., -12.]) + >>> P.polyder(c,2,-1) # (d**2/d(-x)**2)(c) = 6 + 24x + array([ 6., 24.]) + + """ + c = np.array(c, ndmin=1, copy=True) + if c.dtype.char in '?bBhHiIlLqQpP': + # astype fails with NA + c = c + 0.0 + cdt = c.dtype + cnt = pu._deprecate_as_int(m, "the order of derivation") + iaxis = pu._deprecate_as_int(axis, "the axis") + if cnt < 0: + raise ValueError("The order of derivation must be non-negative") + iaxis = normalize_axis_index(iaxis, c.ndim) + + if cnt == 0: + return c + + c = np.moveaxis(c, iaxis, 0) + n = len(c) + if cnt >= n: + c = c[:1]*0 + else: + for i in range(cnt): + n = n - 1 + c *= scl + der = np.empty((n,) + c.shape[1:], dtype=cdt) + for j in range(n, 0, -1): + der[j - 1] = j*c[j] + c = der + c = np.moveaxis(c, 0, iaxis) + return c + + +def polyint(c, m=1, k=[], lbnd=0, scl=1, axis=0): + """ + Integrate a polynomial. + + Returns the polynomial coefficients `c` integrated `m` times from + `lbnd` along `axis`. At each iteration the resulting series is + **multiplied** by `scl` and an integration constant, `k`, is added. + The scaling factor is for use in a linear change of variable. ("Buyer + beware": note that, depending on what one is doing, one may want `scl` + to be the reciprocal of what one might expect; for more information, + see the Notes section below.) The argument `c` is an array of + coefficients, from low to high degree along each axis, e.g., [1,2,3] + represents the polynomial ``1 + 2*x + 3*x**2`` while [[1,2],[1,2]] + represents ``1 + 1*x + 2*y + 2*x*y`` if axis=0 is ``x`` and axis=1 is + ``y``. + + Parameters + ---------- + c : array_like + 1-D array of polynomial coefficients, ordered from low to high. + m : int, optional + Order of integration, must be positive. (Default: 1) + k : {[], list, scalar}, optional + Integration constant(s). The value of the first integral at zero + is the first value in the list, the value of the second integral + at zero is the second value, etc. If ``k == []`` (the default), + all constants are set to zero. If ``m == 1``, a single scalar can + be given instead of a list. + lbnd : scalar, optional + The lower bound of the integral. (Default: 0) + scl : scalar, optional + Following each integration the result is *multiplied* by `scl` + before the integration constant is added. (Default: 1) + axis : int, optional + Axis over which the integral is taken. (Default: 0). + + .. versionadded:: 1.7.0 + + Returns + ------- + S : ndarray + Coefficient array of the integral. + + Raises + ------ + ValueError + If ``m < 1``, ``len(k) > m``, ``np.ndim(lbnd) != 0``, or + ``np.ndim(scl) != 0``. + + See Also + -------- + polyder + + Notes + ----- + Note that the result of each integration is *multiplied* by `scl`. Why + is this important to note? Say one is making a linear change of + variable :math:`u = ax + b` in an integral relative to `x`. Then + :math:`dx = du/a`, so one will need to set `scl` equal to + :math:`1/a` - perhaps not what one would have first thought. + + Examples + -------- + >>> from numpy.polynomial import polynomial as P + >>> c = (1,2,3) + >>> P.polyint(c) # should return array([0, 1, 1, 1]) + array([0., 1., 1., 1.]) + >>> P.polyint(c,3) # should return array([0, 0, 0, 1/6, 1/12, 1/20]) + array([ 0. , 0. , 0. , 0.16666667, 0.08333333, # may vary + 0.05 ]) + >>> P.polyint(c,k=3) # should return array([3, 1, 1, 1]) + array([3., 1., 1., 1.]) + >>> P.polyint(c,lbnd=-2) # should return array([6, 1, 1, 1]) + array([6., 1., 1., 1.]) + >>> P.polyint(c,scl=-2) # should return array([0, -2, -2, -2]) + array([ 0., -2., -2., -2.]) + + """ + c = np.array(c, ndmin=1, copy=True) + if c.dtype.char in '?bBhHiIlLqQpP': + # astype doesn't preserve mask attribute. + c = c + 0.0 + cdt = c.dtype + if not np.iterable(k): + k = [k] + cnt = pu._deprecate_as_int(m, "the order of integration") + iaxis = pu._deprecate_as_int(axis, "the axis") + if cnt < 0: + raise ValueError("The order of integration must be non-negative") + if len(k) > cnt: + raise ValueError("Too many integration constants") + if np.ndim(lbnd) != 0: + raise ValueError("lbnd must be a scalar.") + if np.ndim(scl) != 0: + raise ValueError("scl must be a scalar.") + iaxis = normalize_axis_index(iaxis, c.ndim) + + if cnt == 0: + return c + + k = list(k) + [0]*(cnt - len(k)) + c = np.moveaxis(c, iaxis, 0) + for i in range(cnt): + n = len(c) + c *= scl + if n == 1 and np.all(c[0] == 0): + c[0] += k[i] + else: + tmp = np.empty((n + 1,) + c.shape[1:], dtype=cdt) + tmp[0] = c[0]*0 + tmp[1] = c[0] + for j in range(1, n): + tmp[j + 1] = c[j]/(j + 1) + tmp[0] += k[i] - polyval(lbnd, tmp) + c = tmp + c = np.moveaxis(c, 0, iaxis) + return c + + +def polyval(x, c, tensor=True): + """ + Evaluate a polynomial at points x. + + If `c` is of length `n + 1`, this function returns the value + + .. math:: p(x) = c_0 + c_1 * x + ... + c_n * x^n + + The parameter `x` is converted to an array only if it is a tuple or a + list, otherwise it is treated as a scalar. In either case, either `x` + or its elements must support multiplication and addition both with + themselves and with the elements of `c`. + + If `c` is a 1-D array, then `p(x)` will have the same shape as `x`. If + `c` is multidimensional, then the shape of the result depends on the + value of `tensor`. If `tensor` is true the shape will be c.shape[1:] + + x.shape. If `tensor` is false the shape will be c.shape[1:]. Note that + scalars have shape (,). + + Trailing zeros in the coefficients will be used in the evaluation, so + they should be avoided if efficiency is a concern. + + Parameters + ---------- + x : array_like, compatible object + If `x` is a list or tuple, it is converted to an ndarray, otherwise + it is left unchanged and treated as a scalar. In either case, `x` + or its elements must support addition and multiplication with + with themselves and with the elements of `c`. + c : array_like + Array of coefficients ordered so that the coefficients for terms of + degree n are contained in c[n]. If `c` is multidimensional the + remaining indices enumerate multiple polynomials. In the two + dimensional case the coefficients may be thought of as stored in + the columns of `c`. + tensor : boolean, optional + If True, the shape of the coefficient array is extended with ones + on the right, one for each dimension of `x`. Scalars have dimension 0 + for this action. The result is that every column of coefficients in + `c` is evaluated for every element of `x`. If False, `x` is broadcast + over the columns of `c` for the evaluation. This keyword is useful + when `c` is multidimensional. The default value is True. + + .. versionadded:: 1.7.0 + + Returns + ------- + values : ndarray, compatible object + The shape of the returned array is described above. + + See Also + -------- + polyval2d, polygrid2d, polyval3d, polygrid3d + + Notes + ----- + The evaluation uses Horner's method. + + Examples + -------- + >>> from numpy.polynomial.polynomial import polyval + >>> polyval(1, [1,2,3]) + 6.0 + >>> a = np.arange(4).reshape(2,2) + >>> a + array([[0, 1], + [2, 3]]) + >>> polyval(a, [1,2,3]) + array([[ 1., 6.], + [17., 34.]]) + >>> coef = np.arange(4).reshape(2,2) # multidimensional coefficients + >>> coef + array([[0, 1], + [2, 3]]) + >>> polyval([1,2], coef, tensor=True) + array([[2., 4.], + [4., 7.]]) + >>> polyval([1,2], coef, tensor=False) + array([2., 7.]) + + """ + c = np.array(c, ndmin=1, copy=False) + if c.dtype.char in '?bBhHiIlLqQpP': + # astype fails with NA + c = c + 0.0 + if isinstance(x, (tuple, list)): + x = np.asarray(x) + if isinstance(x, np.ndarray) and tensor: + c = c.reshape(c.shape + (1,)*x.ndim) + + c0 = c[-1] + x*0 + for i in range(2, len(c) + 1): + c0 = c[-i] + c0*x + return c0 + + +def polyvalfromroots(x, r, tensor=True): + """ + Evaluate a polynomial specified by its roots at points x. + + If `r` is of length `N`, this function returns the value + + .. math:: p(x) = \\prod_{n=1}^{N} (x - r_n) + + The parameter `x` is converted to an array only if it is a tuple or a + list, otherwise it is treated as a scalar. In either case, either `x` + or its elements must support multiplication and addition both with + themselves and with the elements of `r`. + + If `r` is a 1-D array, then `p(x)` will have the same shape as `x`. If `r` + is multidimensional, then the shape of the result depends on the value of + `tensor`. If `tensor` is ``True`` the shape will be r.shape[1:] + x.shape; + that is, each polynomial is evaluated at every value of `x`. If `tensor` is + ``False``, the shape will be r.shape[1:]; that is, each polynomial is + evaluated only for the corresponding broadcast value of `x`. Note that + scalars have shape (,). + + .. versionadded:: 1.12 + + Parameters + ---------- + x : array_like, compatible object + If `x` is a list or tuple, it is converted to an ndarray, otherwise + it is left unchanged and treated as a scalar. In either case, `x` + or its elements must support addition and multiplication with + with themselves and with the elements of `r`. + r : array_like + Array of roots. If `r` is multidimensional the first index is the + root index, while the remaining indices enumerate multiple + polynomials. For instance, in the two dimensional case the roots + of each polynomial may be thought of as stored in the columns of `r`. + tensor : boolean, optional + If True, the shape of the roots array is extended with ones on the + right, one for each dimension of `x`. Scalars have dimension 0 for this + action. The result is that every column of coefficients in `r` is + evaluated for every element of `x`. If False, `x` is broadcast over the + columns of `r` for the evaluation. This keyword is useful when `r` is + multidimensional. The default value is True. + + Returns + ------- + values : ndarray, compatible object + The shape of the returned array is described above. + + See Also + -------- + polyroots, polyfromroots, polyval + + Examples + -------- + >>> from numpy.polynomial.polynomial import polyvalfromroots + >>> polyvalfromroots(1, [1,2,3]) + 0.0 + >>> a = np.arange(4).reshape(2,2) + >>> a + array([[0, 1], + [2, 3]]) + >>> polyvalfromroots(a, [-1, 0, 1]) + array([[-0., 0.], + [ 6., 24.]]) + >>> r = np.arange(-2, 2).reshape(2,2) # multidimensional coefficients + >>> r # each column of r defines one polynomial + array([[-2, -1], + [ 0, 1]]) + >>> b = [-2, 1] + >>> polyvalfromroots(b, r, tensor=True) + array([[-0., 3.], + [ 3., 0.]]) + >>> polyvalfromroots(b, r, tensor=False) + array([-0., 0.]) + """ + r = np.array(r, ndmin=1, copy=False) + if r.dtype.char in '?bBhHiIlLqQpP': + r = r.astype(np.double) + if isinstance(x, (tuple, list)): + x = np.asarray(x) + if isinstance(x, np.ndarray): + if tensor: + r = r.reshape(r.shape + (1,)*x.ndim) + elif x.ndim >= r.ndim: + raise ValueError("x.ndim must be < r.ndim when tensor == False") + return np.prod(x - r, axis=0) + + +def polyval2d(x, y, c): + """ + Evaluate a 2-D polynomial at points (x, y). + + This function returns the value + + .. math:: p(x,y) = \\sum_{i,j} c_{i,j} * x^i * y^j + + The parameters `x` and `y` are converted to arrays only if they are + tuples or a lists, otherwise they are treated as a scalars and they + must have the same shape after conversion. In either case, either `x` + and `y` or their elements must support multiplication and addition both + with themselves and with the elements of `c`. + + If `c` has fewer than two dimensions, ones are implicitly appended to + its shape to make it 2-D. The shape of the result will be c.shape[2:] + + x.shape. + + Parameters + ---------- + x, y : array_like, compatible objects + The two dimensional series is evaluated at the points `(x, y)`, + where `x` and `y` must have the same shape. If `x` or `y` is a list + or tuple, it is first converted to an ndarray, otherwise it is left + unchanged and, if it isn't an ndarray, it is treated as a scalar. + c : array_like + Array of coefficients ordered so that the coefficient of the term + of multi-degree i,j is contained in `c[i,j]`. If `c` has + dimension greater than two the remaining indices enumerate multiple + sets of coefficients. + + Returns + ------- + values : ndarray, compatible object + The values of the two dimensional polynomial at points formed with + pairs of corresponding values from `x` and `y`. + + See Also + -------- + polyval, polygrid2d, polyval3d, polygrid3d + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + return pu._valnd(polyval, c, x, y) + + +def polygrid2d(x, y, c): + """ + Evaluate a 2-D polynomial on the Cartesian product of x and y. + + This function returns the values: + + .. math:: p(a,b) = \\sum_{i,j} c_{i,j} * a^i * b^j + + where the points `(a, b)` consist of all pairs formed by taking + `a` from `x` and `b` from `y`. The resulting points form a grid with + `x` in the first dimension and `y` in the second. + + The parameters `x` and `y` are converted to arrays only if they are + tuples or a lists, otherwise they are treated as a scalars. In either + case, either `x` and `y` or their elements must support multiplication + and addition both with themselves and with the elements of `c`. + + If `c` has fewer than two dimensions, ones are implicitly appended to + its shape to make it 2-D. The shape of the result will be c.shape[2:] + + x.shape + y.shape. + + Parameters + ---------- + x, y : array_like, compatible objects + The two dimensional series is evaluated at the points in the + Cartesian product of `x` and `y`. If `x` or `y` is a list or + tuple, it is first converted to an ndarray, otherwise it is left + unchanged and, if it isn't an ndarray, it is treated as a scalar. + c : array_like + Array of coefficients ordered so that the coefficients for terms of + degree i,j are contained in ``c[i,j]``. If `c` has dimension + greater than two the remaining indices enumerate multiple sets of + coefficients. + + Returns + ------- + values : ndarray, compatible object + The values of the two dimensional polynomial at points in the Cartesian + product of `x` and `y`. + + See Also + -------- + polyval, polyval2d, polyval3d, polygrid3d + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + return pu._gridnd(polyval, c, x, y) + + +def polyval3d(x, y, z, c): + """ + Evaluate a 3-D polynomial at points (x, y, z). + + This function returns the values: + + .. math:: p(x,y,z) = \\sum_{i,j,k} c_{i,j,k} * x^i * y^j * z^k + + The parameters `x`, `y`, and `z` are converted to arrays only if + they are tuples or a lists, otherwise they are treated as a scalars and + they must have the same shape after conversion. In either case, either + `x`, `y`, and `z` or their elements must support multiplication and + addition both with themselves and with the elements of `c`. + + If `c` has fewer than 3 dimensions, ones are implicitly appended to its + shape to make it 3-D. The shape of the result will be c.shape[3:] + + x.shape. + + Parameters + ---------- + x, y, z : array_like, compatible object + The three dimensional series is evaluated at the points + `(x, y, z)`, where `x`, `y`, and `z` must have the same shape. If + any of `x`, `y`, or `z` is a list or tuple, it is first converted + to an ndarray, otherwise it is left unchanged and if it isn't an + ndarray it is treated as a scalar. + c : array_like + Array of coefficients ordered so that the coefficient of the term of + multi-degree i,j,k is contained in ``c[i,j,k]``. If `c` has dimension + greater than 3 the remaining indices enumerate multiple sets of + coefficients. + + Returns + ------- + values : ndarray, compatible object + The values of the multidimensional polynomial on points formed with + triples of corresponding values from `x`, `y`, and `z`. + + See Also + -------- + polyval, polyval2d, polygrid2d, polygrid3d + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + return pu._valnd(polyval, c, x, y, z) + + +def polygrid3d(x, y, z, c): + """ + Evaluate a 3-D polynomial on the Cartesian product of x, y and z. + + This function returns the values: + + .. math:: p(a,b,c) = \\sum_{i,j,k} c_{i,j,k} * a^i * b^j * c^k + + where the points `(a, b, c)` consist of all triples formed by taking + `a` from `x`, `b` from `y`, and `c` from `z`. The resulting points form + a grid with `x` in the first dimension, `y` in the second, and `z` in + the third. + + The parameters `x`, `y`, and `z` are converted to arrays only if they + are tuples or a lists, otherwise they are treated as a scalars. In + either case, either `x`, `y`, and `z` or their elements must support + multiplication and addition both with themselves and with the elements + of `c`. + + If `c` has fewer than three dimensions, ones are implicitly appended to + its shape to make it 3-D. The shape of the result will be c.shape[3:] + + x.shape + y.shape + z.shape. + + Parameters + ---------- + x, y, z : array_like, compatible objects + The three dimensional series is evaluated at the points in the + Cartesian product of `x`, `y`, and `z`. If `x`,`y`, or `z` is a + list or tuple, it is first converted to an ndarray, otherwise it is + left unchanged and, if it isn't an ndarray, it is treated as a + scalar. + c : array_like + Array of coefficients ordered so that the coefficients for terms of + degree i,j are contained in ``c[i,j]``. If `c` has dimension + greater than two the remaining indices enumerate multiple sets of + coefficients. + + Returns + ------- + values : ndarray, compatible object + The values of the two dimensional polynomial at points in the Cartesian + product of `x` and `y`. + + See Also + -------- + polyval, polyval2d, polygrid2d, polyval3d + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + return pu._gridnd(polyval, c, x, y, z) + + +def polyvander(x, deg): + """Vandermonde matrix of given degree. + + Returns the Vandermonde matrix of degree `deg` and sample points + `x`. The Vandermonde matrix is defined by + + .. math:: V[..., i] = x^i, + + where `0 <= i <= deg`. The leading indices of `V` index the elements of + `x` and the last index is the power of `x`. + + If `c` is a 1-D array of coefficients of length `n + 1` and `V` is the + matrix ``V = polyvander(x, n)``, then ``np.dot(V, c)`` and + ``polyval(x, c)`` are the same up to roundoff. This equivalence is + useful both for least squares fitting and for the evaluation of a large + number of polynomials of the same degree and sample points. + + Parameters + ---------- + x : array_like + Array of points. The dtype is converted to float64 or complex128 + depending on whether any of the elements are complex. If `x` is + scalar it is converted to a 1-D array. + deg : int + Degree of the resulting matrix. + + Returns + ------- + vander : ndarray. + The Vandermonde matrix. The shape of the returned matrix is + ``x.shape + (deg + 1,)``, where the last index is the power of `x`. + The dtype will be the same as the converted `x`. + + See Also + -------- + polyvander2d, polyvander3d + + """ + ideg = pu._deprecate_as_int(deg, "deg") + if ideg < 0: + raise ValueError("deg must be non-negative") + + x = np.array(x, copy=False, ndmin=1) + 0.0 + dims = (ideg + 1,) + x.shape + dtyp = x.dtype + v = np.empty(dims, dtype=dtyp) + v[0] = x*0 + 1 + if ideg > 0: + v[1] = x + for i in range(2, ideg + 1): + v[i] = v[i-1]*x + return np.moveaxis(v, 0, -1) + + +def polyvander2d(x, y, deg): + """Pseudo-Vandermonde matrix of given degrees. + + Returns the pseudo-Vandermonde matrix of degrees `deg` and sample + points `(x, y)`. The pseudo-Vandermonde matrix is defined by + + .. math:: V[..., (deg[1] + 1)*i + j] = x^i * y^j, + + where `0 <= i <= deg[0]` and `0 <= j <= deg[1]`. The leading indices of + `V` index the points `(x, y)` and the last index encodes the powers of + `x` and `y`. + + If ``V = polyvander2d(x, y, [xdeg, ydeg])``, then the columns of `V` + correspond to the elements of a 2-D coefficient array `c` of shape + (xdeg + 1, ydeg + 1) in the order + + .. math:: c_{00}, c_{01}, c_{02} ... , c_{10}, c_{11}, c_{12} ... + + and ``np.dot(V, c.flat)`` and ``polyval2d(x, y, c)`` will be the same + up to roundoff. This equivalence is useful both for least squares + fitting and for the evaluation of a large number of 2-D polynomials + of the same degrees and sample points. + + Parameters + ---------- + x, y : array_like + Arrays of point coordinates, all of the same shape. The dtypes + will be converted to either float64 or complex128 depending on + whether any of the elements are complex. Scalars are converted to + 1-D arrays. + deg : list of ints + List of maximum degrees of the form [x_deg, y_deg]. + + Returns + ------- + vander2d : ndarray + The shape of the returned matrix is ``x.shape + (order,)``, where + :math:`order = (deg[0]+1)*(deg([1]+1)`. The dtype will be the same + as the converted `x` and `y`. + + See Also + -------- + polyvander, polyvander3d, polyval2d, polyval3d + + """ + return pu._vander_nd_flat((polyvander, polyvander), (x, y), deg) + + +def polyvander3d(x, y, z, deg): + """Pseudo-Vandermonde matrix of given degrees. + + Returns the pseudo-Vandermonde matrix of degrees `deg` and sample + points `(x, y, z)`. If `l, m, n` are the given degrees in `x, y, z`, + then The pseudo-Vandermonde matrix is defined by + + .. math:: V[..., (m+1)(n+1)i + (n+1)j + k] = x^i * y^j * z^k, + + where `0 <= i <= l`, `0 <= j <= m`, and `0 <= j <= n`. The leading + indices of `V` index the points `(x, y, z)` and the last index encodes + the powers of `x`, `y`, and `z`. + + If ``V = polyvander3d(x, y, z, [xdeg, ydeg, zdeg])``, then the columns + of `V` correspond to the elements of a 3-D coefficient array `c` of + shape (xdeg + 1, ydeg + 1, zdeg + 1) in the order + + .. math:: c_{000}, c_{001}, c_{002},... , c_{010}, c_{011}, c_{012},... + + and ``np.dot(V, c.flat)`` and ``polyval3d(x, y, z, c)`` will be the + same up to roundoff. This equivalence is useful both for least squares + fitting and for the evaluation of a large number of 3-D polynomials + of the same degrees and sample points. + + Parameters + ---------- + x, y, z : array_like + Arrays of point coordinates, all of the same shape. The dtypes will + be converted to either float64 or complex128 depending on whether + any of the elements are complex. Scalars are converted to 1-D + arrays. + deg : list of ints + List of maximum degrees of the form [x_deg, y_deg, z_deg]. + + Returns + ------- + vander3d : ndarray + The shape of the returned matrix is ``x.shape + (order,)``, where + :math:`order = (deg[0]+1)*(deg([1]+1)*(deg[2]+1)`. The dtype will + be the same as the converted `x`, `y`, and `z`. + + See Also + -------- + polyvander, polyvander3d, polyval2d, polyval3d + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + return pu._vander_nd_flat((polyvander, polyvander, polyvander), (x, y, z), deg) + + +def polyfit(x, y, deg, rcond=None, full=False, w=None): + """ + Least-squares fit of a polynomial to data. + + Return the coefficients of a polynomial of degree `deg` that is the + least squares fit to the data values `y` given at points `x`. If `y` is + 1-D the returned coefficients will also be 1-D. If `y` is 2-D multiple + fits are done, one for each column of `y`, and the resulting + coefficients are stored in the corresponding columns of a 2-D return. + The fitted polynomial(s) are in the form + + .. math:: p(x) = c_0 + c_1 * x + ... + c_n * x^n, + + where `n` is `deg`. + + Parameters + ---------- + x : array_like, shape (`M`,) + x-coordinates of the `M` sample (data) points ``(x[i], y[i])``. + y : array_like, shape (`M`,) or (`M`, `K`) + y-coordinates of the sample points. Several sets of sample points + sharing the same x-coordinates can be (independently) fit with one + call to `polyfit` by passing in for `y` a 2-D array that contains + one data set per column. + deg : int or 1-D array_like + Degree(s) of the fitting polynomials. If `deg` is a single integer + all terms up to and including the `deg`'th term are included in the + fit. For NumPy versions >= 1.11.0 a list of integers specifying the + degrees of the terms to include may be used instead. + rcond : float, optional + Relative condition number of the fit. Singular values smaller + than `rcond`, relative to the largest singular value, will be + ignored. The default value is ``len(x)*eps``, where `eps` is the + relative precision of the platform's float type, about 2e-16 in + most cases. + full : bool, optional + Switch determining the nature of the return value. When ``False`` + (the default) just the coefficients are returned; when ``True``, + diagnostic information from the singular value decomposition (used + to solve the fit's matrix equation) is also returned. + w : array_like, shape (`M`,), optional + Weights. If not None, the weight ``w[i]`` applies to the unsquared + residual ``y[i] - y_hat[i]`` at ``x[i]``. Ideally the weights are + chosen so that the errors of the products ``w[i]*y[i]`` all have the + same variance. When using inverse-variance weighting, use + ``w[i] = 1/sigma(y[i])``. The default value is None. + + .. versionadded:: 1.5.0 + + Returns + ------- + coef : ndarray, shape (`deg` + 1,) or (`deg` + 1, `K`) + Polynomial coefficients ordered from low to high. If `y` was 2-D, + the coefficients in column `k` of `coef` represent the polynomial + fit to the data in `y`'s `k`-th column. + + [residuals, rank, singular_values, rcond] : list + These values are only returned if ``full == True`` + + - residuals -- sum of squared residuals of the least squares fit + - rank -- the numerical rank of the scaled Vandermonde matrix + - singular_values -- singular values of the scaled Vandermonde matrix + - rcond -- value of `rcond`. + + For more details, see `numpy.linalg.lstsq`. + + Raises + ------ + RankWarning + Raised if the matrix in the least-squares fit is rank deficient. + The warning is only raised if ``full == False``. The warnings can + be turned off by: + + >>> import warnings + >>> warnings.simplefilter('ignore', np.RankWarning) + + See Also + -------- + numpy.polynomial.chebyshev.chebfit + numpy.polynomial.legendre.legfit + numpy.polynomial.laguerre.lagfit + numpy.polynomial.hermite.hermfit + numpy.polynomial.hermite_e.hermefit + polyval : Evaluates a polynomial. + polyvander : Vandermonde matrix for powers. + numpy.linalg.lstsq : Computes a least-squares fit from the matrix. + scipy.interpolate.UnivariateSpline : Computes spline fits. + + Notes + ----- + The solution is the coefficients of the polynomial `p` that minimizes + the sum of the weighted squared errors + + .. math:: E = \\sum_j w_j^2 * |y_j - p(x_j)|^2, + + where the :math:`w_j` are the weights. This problem is solved by + setting up the (typically) over-determined matrix equation: + + .. math:: V(x) * c = w * y, + + where `V` is the weighted pseudo Vandermonde matrix of `x`, `c` are the + coefficients to be solved for, `w` are the weights, and `y` are the + observed values. This equation is then solved using the singular value + decomposition of `V`. + + If some of the singular values of `V` are so small that they are + neglected (and `full` == ``False``), a `RankWarning` will be raised. + This means that the coefficient values may be poorly determined. + Fitting to a lower order polynomial will usually get rid of the warning + (but may not be what you want, of course; if you have independent + reason(s) for choosing the degree which isn't working, you may have to: + a) reconsider those reasons, and/or b) reconsider the quality of your + data). The `rcond` parameter can also be set to a value smaller than + its default, but the resulting fit may be spurious and have large + contributions from roundoff error. + + Polynomial fits using double precision tend to "fail" at about + (polynomial) degree 20. Fits using Chebyshev or Legendre series are + generally better conditioned, but much can still depend on the + distribution of the sample points and the smoothness of the data. If + the quality of the fit is inadequate, splines may be a good + alternative. + + Examples + -------- + >>> np.random.seed(123) + >>> from numpy.polynomial import polynomial as P + >>> x = np.linspace(-1,1,51) # x "data": [-1, -0.96, ..., 0.96, 1] + >>> y = x**3 - x + np.random.randn(len(x)) # x^3 - x + Gaussian noise + >>> c, stats = P.polyfit(x,y,3,full=True) + >>> np.random.seed(123) + >>> c # c[0], c[2] should be approx. 0, c[1] approx. -1, c[3] approx. 1 + array([ 0.01909725, -1.30598256, -0.00577963, 1.02644286]) # may vary + >>> stats # note the large SSR, explaining the rather poor results + [array([ 38.06116253]), 4, array([ 1.38446749, 1.32119158, 0.50443316, # may vary + 0.28853036]), 1.1324274851176597e-014] + + Same thing without the added noise + + >>> y = x**3 - x + >>> c, stats = P.polyfit(x,y,3,full=True) + >>> c # c[0], c[2] should be "very close to 0", c[1] ~= -1, c[3] ~= 1 + array([-6.36925336e-18, -1.00000000e+00, -4.08053781e-16, 1.00000000e+00]) + >>> stats # note the minuscule SSR + [array([ 7.46346754e-31]), 4, array([ 1.38446749, 1.32119158, # may vary + 0.50443316, 0.28853036]), 1.1324274851176597e-014] + + """ + return pu._fit(polyvander, x, y, deg, rcond, full, w) + + +def polycompanion(c): + """ + Return the companion matrix of c. + + The companion matrix for power series cannot be made symmetric by + scaling the basis, so this function differs from those for the + orthogonal polynomials. + + Parameters + ---------- + c : array_like + 1-D array of polynomial coefficients ordered from low to high + degree. + + Returns + ------- + mat : ndarray + Companion matrix of dimensions (deg, deg). + + Notes + ----- + + .. versionadded:: 1.7.0 + + """ + # c is a trimmed copy + [c] = pu.as_series([c]) + if len(c) < 2: + raise ValueError('Series must have maximum degree of at least 1.') + if len(c) == 2: + return np.array([[-c[0]/c[1]]]) + + n = len(c) - 1 + mat = np.zeros((n, n), dtype=c.dtype) + bot = mat.reshape(-1)[n::n+1] + bot[...] = 1 + mat[:, -1] -= c[:-1]/c[-1] + return mat + + +def polyroots(c): + """ + Compute the roots of a polynomial. + + Return the roots (a.k.a. "zeros") of the polynomial + + .. math:: p(x) = \\sum_i c[i] * x^i. + + Parameters + ---------- + c : 1-D array_like + 1-D array of polynomial coefficients. + + Returns + ------- + out : ndarray + Array of the roots of the polynomial. If all the roots are real, + then `out` is also real, otherwise it is complex. + + See Also + -------- + numpy.polynomial.chebyshev.chebroots + numpy.polynomial.legendre.legroots + numpy.polynomial.laguerre.lagroots + numpy.polynomial.hermite.hermroots + numpy.polynomial.hermite_e.hermeroots + + Notes + ----- + The root estimates are obtained as the eigenvalues of the companion + matrix, Roots far from the origin of the complex plane may have large + errors due to the numerical instability of the power series for such + values. Roots with multiplicity greater than 1 will also show larger + errors as the value of the series near such points is relatively + insensitive to errors in the roots. Isolated roots near the origin can + be improved by a few iterations of Newton's method. + + Examples + -------- + >>> import numpy.polynomial.polynomial as poly + >>> poly.polyroots(poly.polyfromroots((-1,0,1))) + array([-1., 0., 1.]) + >>> poly.polyroots(poly.polyfromroots((-1,0,1))).dtype + dtype('float64') + >>> j = complex(0,1) + >>> poly.polyroots(poly.polyfromroots((-j,0,j))) + array([ 0.00000000e+00+0.j, 0.00000000e+00+1.j, 2.77555756e-17-1.j]) # may vary + + """ + # c is a trimmed copy + [c] = pu.as_series([c]) + if len(c) < 2: + return np.array([], dtype=c.dtype) + if len(c) == 2: + return np.array([-c[0]/c[1]]) + + # rotated companion matrix reduces error + m = polycompanion(c)[::-1,::-1] + r = la.eigvals(m) + r.sort() + return r + + +# +# polynomial class +# + +class Polynomial(ABCPolyBase): + """A power series class. + + The Polynomial class provides the standard Python numerical methods + '+', '-', '*', '//', '%', 'divmod', '**', and '()' as well as the + attributes and methods listed in the `ABCPolyBase` documentation. + + Parameters + ---------- + coef : array_like + Polynomial coefficients in order of increasing degree, i.e., + ``(1, 2, 3)`` give ``1 + 2*x + 3*x**2``. + domain : (2,) array_like, optional + Domain to use. The interval ``[domain[0], domain[1]]`` is mapped + to the interval ``[window[0], window[1]]`` by shifting and scaling. + The default value is [-1, 1]. + window : (2,) array_like, optional + Window, see `domain` for its use. The default value is [-1, 1]. + + .. versionadded:: 1.6.0 + symbol : str, optional + Symbol used to represent the independent variable in string + representations of the polynomial expression, e.g. for printing. + The symbol must be a valid Python identifier. Default value is 'x'. + + .. versionadded:: 1.24 + + """ + # Virtual Functions + _add = staticmethod(polyadd) + _sub = staticmethod(polysub) + _mul = staticmethod(polymul) + _div = staticmethod(polydiv) + _pow = staticmethod(polypow) + _val = staticmethod(polyval) + _int = staticmethod(polyint) + _der = staticmethod(polyder) + _fit = staticmethod(polyfit) + _line = staticmethod(polyline) + _roots = staticmethod(polyroots) + _fromroots = staticmethod(polyfromroots) + + # Virtual properties + domain = np.array(polydomain) + window = np.array(polydomain) + basis_name = None + + @classmethod + def _str_term_unicode(cls, i, arg_str): + if i == '1': + return f"·{arg_str}" + else: + return f"·{arg_str}{i.translate(cls._superscript_mapping)}" + + @staticmethod + def _str_term_ascii(i, arg_str): + if i == '1': + return f" {arg_str}" + else: + return f" {arg_str}**{i}" + + @staticmethod + def _repr_latex_term(i, arg_str, needs_parens): + if needs_parens: + arg_str = rf"\left({arg_str}\right)" + if i == 0: + return '1' + elif i == 1: + return arg_str + else: + return f"{arg_str}^{{{i}}}" diff --git a/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/polyutils.py b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/polyutils.py new file mode 100644 index 0000000000000000000000000000000000000000..4829138920169efc5b18b20be4a7d7c9509ba7fb --- /dev/null +++ b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/polyutils.py @@ -0,0 +1,789 @@ +""" +Utility classes and functions for the polynomial modules. + +This module provides: error and warning objects; a polynomial base class; +and some routines used in both the `polynomial` and `chebyshev` modules. + +Warning objects +--------------- + +.. autosummary:: + :toctree: generated/ + + RankWarning raised in least-squares fit for rank-deficient matrix. + +Functions +--------- + +.. autosummary:: + :toctree: generated/ + + as_series convert list of array_likes into 1-D arrays of common type. + trimseq remove trailing zeros. + trimcoef remove small trailing coefficients. + getdomain return the domain appropriate for a given set of abscissae. + mapdomain maps points between domains. + mapparms parameters of the linear map between domains. + +""" +import operator +import functools +import warnings + +import numpy as np + +from numpy.core.multiarray import dragon4_positional, dragon4_scientific +from numpy.core.umath import absolute + +__all__ = [ + 'RankWarning', 'as_series', 'trimseq', + 'trimcoef', 'getdomain', 'mapdomain', 'mapparms', + 'format_float'] + +# +# Warnings and Exceptions +# + +class RankWarning(UserWarning): + """Issued by chebfit when the design matrix is rank deficient.""" + pass + +# +# Helper functions to convert inputs to 1-D arrays +# +def trimseq(seq): + """Remove small Poly series coefficients. + + Parameters + ---------- + seq : sequence + Sequence of Poly series coefficients. This routine fails for + empty sequences. + + Returns + ------- + series : sequence + Subsequence with trailing zeros removed. If the resulting sequence + would be empty, return the first element. The returned sequence may + or may not be a view. + + Notes + ----- + Do not lose the type info if the sequence contains unknown objects. + + """ + if len(seq) == 0: + return seq + else: + for i in range(len(seq) - 1, -1, -1): + if seq[i] != 0: + break + return seq[:i+1] + + +def as_series(alist, trim=True): + """ + Return argument as a list of 1-d arrays. + + The returned list contains array(s) of dtype double, complex double, or + object. A 1-d argument of shape ``(N,)`` is parsed into ``N`` arrays of + size one; a 2-d argument of shape ``(M,N)`` is parsed into ``M`` arrays + of size ``N`` (i.e., is "parsed by row"); and a higher dimensional array + raises a Value Error if it is not first reshaped into either a 1-d or 2-d + array. + + Parameters + ---------- + alist : array_like + A 1- or 2-d array_like + trim : boolean, optional + When True, trailing zeros are removed from the inputs. + When False, the inputs are passed through intact. + + Returns + ------- + [a1, a2,...] : list of 1-D arrays + A copy of the input data as a list of 1-d arrays. + + Raises + ------ + ValueError + Raised when `as_series` cannot convert its input to 1-d arrays, or at + least one of the resulting arrays is empty. + + Examples + -------- + >>> from numpy.polynomial import polyutils as pu + >>> a = np.arange(4) + >>> pu.as_series(a) + [array([0.]), array([1.]), array([2.]), array([3.])] + >>> b = np.arange(6).reshape((2,3)) + >>> pu.as_series(b) + [array([0., 1., 2.]), array([3., 4., 5.])] + + >>> pu.as_series((1, np.arange(3), np.arange(2, dtype=np.float16))) + [array([1.]), array([0., 1., 2.]), array([0., 1.])] + + >>> pu.as_series([2, [1.1, 0.]]) + [array([2.]), array([1.1])] + + >>> pu.as_series([2, [1.1, 0.]], trim=False) + [array([2.]), array([1.1, 0. ])] + + """ + arrays = [np.array(a, ndmin=1, copy=False) for a in alist] + if min([a.size for a in arrays]) == 0: + raise ValueError("Coefficient array is empty") + if any(a.ndim != 1 for a in arrays): + raise ValueError("Coefficient array is not 1-d") + if trim: + arrays = [trimseq(a) for a in arrays] + + if any(a.dtype == np.dtype(object) for a in arrays): + ret = [] + for a in arrays: + if a.dtype != np.dtype(object): + tmp = np.empty(len(a), dtype=np.dtype(object)) + tmp[:] = a[:] + ret.append(tmp) + else: + ret.append(a.copy()) + else: + try: + dtype = np.common_type(*arrays) + except Exception as e: + raise ValueError("Coefficient arrays have no common type") from e + ret = [np.array(a, copy=True, dtype=dtype) for a in arrays] + return ret + + +def trimcoef(c, tol=0): + """ + Remove "small" "trailing" coefficients from a polynomial. + + "Small" means "small in absolute value" and is controlled by the + parameter `tol`; "trailing" means highest order coefficient(s), e.g., in + ``[0, 1, 1, 0, 0]`` (which represents ``0 + x + x**2 + 0*x**3 + 0*x**4``) + both the 3-rd and 4-th order coefficients would be "trimmed." + + Parameters + ---------- + c : array_like + 1-d array of coefficients, ordered from lowest order to highest. + tol : number, optional + Trailing (i.e., highest order) elements with absolute value less + than or equal to `tol` (default value is zero) are removed. + + Returns + ------- + trimmed : ndarray + 1-d array with trailing zeros removed. If the resulting series + would be empty, a series containing a single zero is returned. + + Raises + ------ + ValueError + If `tol` < 0 + + See Also + -------- + trimseq + + Examples + -------- + >>> from numpy.polynomial import polyutils as pu + >>> pu.trimcoef((0,0,3,0,5,0,0)) + array([0., 0., 3., 0., 5.]) + >>> pu.trimcoef((0,0,1e-3,0,1e-5,0,0),1e-3) # item == tol is trimmed + array([0.]) + >>> i = complex(0,1) # works for complex + >>> pu.trimcoef((3e-4,1e-3*(1-i),5e-4,2e-5*(1+i)), 1e-3) + array([0.0003+0.j , 0.001 -0.001j]) + + """ + if tol < 0: + raise ValueError("tol must be non-negative") + + [c] = as_series([c]) + [ind] = np.nonzero(np.abs(c) > tol) + if len(ind) == 0: + return c[:1]*0 + else: + return c[:ind[-1] + 1].copy() + +def getdomain(x): + """ + Return a domain suitable for given abscissae. + + Find a domain suitable for a polynomial or Chebyshev series + defined at the values supplied. + + Parameters + ---------- + x : array_like + 1-d array of abscissae whose domain will be determined. + + Returns + ------- + domain : ndarray + 1-d array containing two values. If the inputs are complex, then + the two returned points are the lower left and upper right corners + of the smallest rectangle (aligned with the axes) in the complex + plane containing the points `x`. If the inputs are real, then the + two points are the ends of the smallest interval containing the + points `x`. + + See Also + -------- + mapparms, mapdomain + + Examples + -------- + >>> from numpy.polynomial import polyutils as pu + >>> points = np.arange(4)**2 - 5; points + array([-5, -4, -1, 4]) + >>> pu.getdomain(points) + array([-5., 4.]) + >>> c = np.exp(complex(0,1)*np.pi*np.arange(12)/6) # unit circle + >>> pu.getdomain(c) + array([-1.-1.j, 1.+1.j]) + + """ + [x] = as_series([x], trim=False) + if x.dtype.char in np.typecodes['Complex']: + rmin, rmax = x.real.min(), x.real.max() + imin, imax = x.imag.min(), x.imag.max() + return np.array((complex(rmin, imin), complex(rmax, imax))) + else: + return np.array((x.min(), x.max())) + +def mapparms(old, new): + """ + Linear map parameters between domains. + + Return the parameters of the linear map ``offset + scale*x`` that maps + `old` to `new` such that ``old[i] -> new[i]``, ``i = 0, 1``. + + Parameters + ---------- + old, new : array_like + Domains. Each domain must (successfully) convert to a 1-d array + containing precisely two values. + + Returns + ------- + offset, scale : scalars + The map ``L(x) = offset + scale*x`` maps the first domain to the + second. + + See Also + -------- + getdomain, mapdomain + + Notes + ----- + Also works for complex numbers, and thus can be used to calculate the + parameters required to map any line in the complex plane to any other + line therein. + + Examples + -------- + >>> from numpy.polynomial import polyutils as pu + >>> pu.mapparms((-1,1),(-1,1)) + (0.0, 1.0) + >>> pu.mapparms((1,-1),(-1,1)) + (-0.0, -1.0) + >>> i = complex(0,1) + >>> pu.mapparms((-i,-1),(1,i)) + ((1+1j), (1-0j)) + + """ + oldlen = old[1] - old[0] + newlen = new[1] - new[0] + off = (old[1]*new[0] - old[0]*new[1])/oldlen + scl = newlen/oldlen + return off, scl + +def mapdomain(x, old, new): + """ + Apply linear map to input points. + + The linear map ``offset + scale*x`` that maps the domain `old` to + the domain `new` is applied to the points `x`. + + Parameters + ---------- + x : array_like + Points to be mapped. If `x` is a subtype of ndarray the subtype + will be preserved. + old, new : array_like + The two domains that determine the map. Each must (successfully) + convert to 1-d arrays containing precisely two values. + + Returns + ------- + x_out : ndarray + Array of points of the same shape as `x`, after application of the + linear map between the two domains. + + See Also + -------- + getdomain, mapparms + + Notes + ----- + Effectively, this implements: + + .. math:: + x\\_out = new[0] + m(x - old[0]) + + where + + .. math:: + m = \\frac{new[1]-new[0]}{old[1]-old[0]} + + Examples + -------- + >>> from numpy.polynomial import polyutils as pu + >>> old_domain = (-1,1) + >>> new_domain = (0,2*np.pi) + >>> x = np.linspace(-1,1,6); x + array([-1. , -0.6, -0.2, 0.2, 0.6, 1. ]) + >>> x_out = pu.mapdomain(x, old_domain, new_domain); x_out + array([ 0. , 1.25663706, 2.51327412, 3.76991118, 5.02654825, # may vary + 6.28318531]) + >>> x - pu.mapdomain(x_out, new_domain, old_domain) + array([0., 0., 0., 0., 0., 0.]) + + Also works for complex numbers (and thus can be used to map any line in + the complex plane to any other line therein). + + >>> i = complex(0,1) + >>> old = (-1 - i, 1 + i) + >>> new = (-1 + i, 1 - i) + >>> z = np.linspace(old[0], old[1], 6); z + array([-1. -1.j , -0.6-0.6j, -0.2-0.2j, 0.2+0.2j, 0.6+0.6j, 1. +1.j ]) + >>> new_z = pu.mapdomain(z, old, new); new_z + array([-1.0+1.j , -0.6+0.6j, -0.2+0.2j, 0.2-0.2j, 0.6-0.6j, 1.0-1.j ]) # may vary + + """ + x = np.asanyarray(x) + off, scl = mapparms(old, new) + return off + scl*x + + +def _nth_slice(i, ndim): + sl = [np.newaxis] * ndim + sl[i] = slice(None) + return tuple(sl) + + +def _vander_nd(vander_fs, points, degrees): + r""" + A generalization of the Vandermonde matrix for N dimensions + + The result is built by combining the results of 1d Vandermonde matrices, + + .. math:: + W[i_0, \ldots, i_M, j_0, \ldots, j_N] = \prod_{k=0}^N{V_k(x_k)[i_0, \ldots, i_M, j_k]} + + where + + .. math:: + N &= \texttt{len(points)} = \texttt{len(degrees)} = \texttt{len(vander\_fs)} \\ + M &= \texttt{points[k].ndim} \\ + V_k &= \texttt{vander\_fs[k]} \\ + x_k &= \texttt{points[k]} \\ + 0 \le j_k &\le \texttt{degrees[k]} + + Expanding the one-dimensional :math:`V_k` functions gives: + + .. math:: + W[i_0, \ldots, i_M, j_0, \ldots, j_N] = \prod_{k=0}^N{B_{k, j_k}(x_k[i_0, \ldots, i_M])} + + where :math:`B_{k,m}` is the m'th basis of the polynomial construction used along + dimension :math:`k`. For a regular polynomial, :math:`B_{k, m}(x) = P_m(x) = x^m`. + + Parameters + ---------- + vander_fs : Sequence[function(array_like, int) -> ndarray] + The 1d vander function to use for each axis, such as ``polyvander`` + points : Sequence[array_like] + Arrays of point coordinates, all of the same shape. The dtypes + will be converted to either float64 or complex128 depending on + whether any of the elements are complex. Scalars are converted to + 1-D arrays. + This must be the same length as `vander_fs`. + degrees : Sequence[int] + The maximum degree (inclusive) to use for each axis. + This must be the same length as `vander_fs`. + + Returns + ------- + vander_nd : ndarray + An array of shape ``points[0].shape + tuple(d + 1 for d in degrees)``. + """ + n_dims = len(vander_fs) + if n_dims != len(points): + raise ValueError( + f"Expected {n_dims} dimensions of sample points, got {len(points)}") + if n_dims != len(degrees): + raise ValueError( + f"Expected {n_dims} dimensions of degrees, got {len(degrees)}") + if n_dims == 0: + raise ValueError("Unable to guess a dtype or shape when no points are given") + + # convert to the same shape and type + points = tuple(np.array(tuple(points), copy=False) + 0.0) + + # produce the vandermonde matrix for each dimension, placing the last + # axis of each in an independent trailing axis of the output + vander_arrays = ( + vander_fs[i](points[i], degrees[i])[(...,) + _nth_slice(i, n_dims)] + for i in range(n_dims) + ) + + # we checked this wasn't empty already, so no `initial` needed + return functools.reduce(operator.mul, vander_arrays) + + +def _vander_nd_flat(vander_fs, points, degrees): + """ + Like `_vander_nd`, but flattens the last ``len(degrees)`` axes into a single axis + + Used to implement the public ``vanderd`` functions. + """ + v = _vander_nd(vander_fs, points, degrees) + return v.reshape(v.shape[:-len(degrees)] + (-1,)) + + +def _fromroots(line_f, mul_f, roots): + """ + Helper function used to implement the ``fromroots`` functions. + + Parameters + ---------- + line_f : function(float, float) -> ndarray + The ``line`` function, such as ``polyline`` + mul_f : function(array_like, array_like) -> ndarray + The ``mul`` function, such as ``polymul`` + roots + See the ``fromroots`` functions for more detail + """ + if len(roots) == 0: + return np.ones(1) + else: + [roots] = as_series([roots], trim=False) + roots.sort() + p = [line_f(-r, 1) for r in roots] + n = len(p) + while n > 1: + m, r = divmod(n, 2) + tmp = [mul_f(p[i], p[i+m]) for i in range(m)] + if r: + tmp[0] = mul_f(tmp[0], p[-1]) + p = tmp + n = m + return p[0] + + +def _valnd(val_f, c, *args): + """ + Helper function used to implement the ``vald`` functions. + + Parameters + ---------- + val_f : function(array_like, array_like, tensor: bool) -> array_like + The ``val`` function, such as ``polyval`` + c, args + See the ``vald`` functions for more detail + """ + args = [np.asanyarray(a) for a in args] + shape0 = args[0].shape + if not all((a.shape == shape0 for a in args[1:])): + if len(args) == 3: + raise ValueError('x, y, z are incompatible') + elif len(args) == 2: + raise ValueError('x, y are incompatible') + else: + raise ValueError('ordinates are incompatible') + it = iter(args) + x0 = next(it) + + # use tensor on only the first + c = val_f(x0, c) + for xi in it: + c = val_f(xi, c, tensor=False) + return c + + +def _gridnd(val_f, c, *args): + """ + Helper function used to implement the ``gridd`` functions. + + Parameters + ---------- + val_f : function(array_like, array_like, tensor: bool) -> array_like + The ``val`` function, such as ``polyval`` + c, args + See the ``gridd`` functions for more detail + """ + for xi in args: + c = val_f(xi, c) + return c + + +def _div(mul_f, c1, c2): + """ + Helper function used to implement the ``div`` functions. + + Implementation uses repeated subtraction of c2 multiplied by the nth basis. + For some polynomial types, a more efficient approach may be possible. + + Parameters + ---------- + mul_f : function(array_like, array_like) -> array_like + The ``mul`` function, such as ``polymul`` + c1, c2 + See the ``div`` functions for more detail + """ + # c1, c2 are trimmed copies + [c1, c2] = as_series([c1, c2]) + if c2[-1] == 0: + raise ZeroDivisionError() + + lc1 = len(c1) + lc2 = len(c2) + if lc1 < lc2: + return c1[:1]*0, c1 + elif lc2 == 1: + return c1/c2[-1], c1[:1]*0 + else: + quo = np.empty(lc1 - lc2 + 1, dtype=c1.dtype) + rem = c1 + for i in range(lc1 - lc2, - 1, -1): + p = mul_f([0]*i + [1], c2) + q = rem[-1]/p[-1] + rem = rem[:-1] - q*p[:-1] + quo[i] = q + return quo, trimseq(rem) + + +def _add(c1, c2): + """ Helper function used to implement the ``add`` functions. """ + # c1, c2 are trimmed copies + [c1, c2] = as_series([c1, c2]) + if len(c1) > len(c2): + c1[:c2.size] += c2 + ret = c1 + else: + c2[:c1.size] += c1 + ret = c2 + return trimseq(ret) + + +def _sub(c1, c2): + """ Helper function used to implement the ``sub`` functions. """ + # c1, c2 are trimmed copies + [c1, c2] = as_series([c1, c2]) + if len(c1) > len(c2): + c1[:c2.size] -= c2 + ret = c1 + else: + c2 = -c2 + c2[:c1.size] += c1 + ret = c2 + return trimseq(ret) + + +def _fit(vander_f, x, y, deg, rcond=None, full=False, w=None): + """ + Helper function used to implement the ``fit`` functions. + + Parameters + ---------- + vander_f : function(array_like, int) -> ndarray + The 1d vander function, such as ``polyvander`` + c1, c2 + See the ``fit`` functions for more detail + """ + x = np.asarray(x) + 0.0 + y = np.asarray(y) + 0.0 + deg = np.asarray(deg) + + # check arguments. + if deg.ndim > 1 or deg.dtype.kind not in 'iu' or deg.size == 0: + raise TypeError("deg must be an int or non-empty 1-D array of int") + if deg.min() < 0: + raise ValueError("expected deg >= 0") + if x.ndim != 1: + raise TypeError("expected 1D vector for x") + if x.size == 0: + raise TypeError("expected non-empty vector for x") + if y.ndim < 1 or y.ndim > 2: + raise TypeError("expected 1D or 2D array for y") + if len(x) != len(y): + raise TypeError("expected x and y to have same length") + + if deg.ndim == 0: + lmax = deg + order = lmax + 1 + van = vander_f(x, lmax) + else: + deg = np.sort(deg) + lmax = deg[-1] + order = len(deg) + van = vander_f(x, lmax)[:, deg] + + # set up the least squares matrices in transposed form + lhs = van.T + rhs = y.T + if w is not None: + w = np.asarray(w) + 0.0 + if w.ndim != 1: + raise TypeError("expected 1D vector for w") + if len(x) != len(w): + raise TypeError("expected x and w to have same length") + # apply weights. Don't use inplace operations as they + # can cause problems with NA. + lhs = lhs * w + rhs = rhs * w + + # set rcond + if rcond is None: + rcond = len(x)*np.finfo(x.dtype).eps + + # Determine the norms of the design matrix columns. + if issubclass(lhs.dtype.type, np.complexfloating): + scl = np.sqrt((np.square(lhs.real) + np.square(lhs.imag)).sum(1)) + else: + scl = np.sqrt(np.square(lhs).sum(1)) + scl[scl == 0] = 1 + + # Solve the least squares problem. + c, resids, rank, s = np.linalg.lstsq(lhs.T/scl, rhs.T, rcond) + c = (c.T/scl).T + + # Expand c to include non-fitted coefficients which are set to zero + if deg.ndim > 0: + if c.ndim == 2: + cc = np.zeros((lmax+1, c.shape[1]), dtype=c.dtype) + else: + cc = np.zeros(lmax+1, dtype=c.dtype) + cc[deg] = c + c = cc + + # warn on rank reduction + if rank != order and not full: + msg = "The fit may be poorly conditioned" + warnings.warn(msg, RankWarning, stacklevel=2) + + if full: + return c, [resids, rank, s, rcond] + else: + return c + + +def _pow(mul_f, c, pow, maxpower): + """ + Helper function used to implement the ``pow`` functions. + + Parameters + ---------- + mul_f : function(array_like, array_like) -> ndarray + The ``mul`` function, such as ``polymul`` + c : array_like + 1-D array of array of series coefficients + pow, maxpower + See the ``pow`` functions for more detail + """ + # c is a trimmed copy + [c] = as_series([c]) + power = int(pow) + if power != pow or power < 0: + raise ValueError("Power must be a non-negative integer.") + elif maxpower is not None and power > maxpower: + raise ValueError("Power is too large") + elif power == 0: + return np.array([1], dtype=c.dtype) + elif power == 1: + return c + else: + # This can be made more efficient by using powers of two + # in the usual way. + prd = c + for i in range(2, power + 1): + prd = mul_f(prd, c) + return prd + + +def _deprecate_as_int(x, desc): + """ + Like `operator.index`, but emits a deprecation warning when passed a float + + Parameters + ---------- + x : int-like, or float with integral value + Value to interpret as an integer + desc : str + description to include in any error message + + Raises + ------ + TypeError : if x is a non-integral float or non-numeric + DeprecationWarning : if x is an integral float + """ + try: + return operator.index(x) + except TypeError as e: + # Numpy 1.17.0, 2019-03-11 + try: + ix = int(x) + except TypeError: + pass + else: + if ix == x: + warnings.warn( + f"In future, this will raise TypeError, as {desc} will " + "need to be an integer not just an integral float.", + DeprecationWarning, + stacklevel=3 + ) + return ix + + raise TypeError(f"{desc} must be an integer") from e + + +def format_float(x, parens=False): + if not np.issubdtype(type(x), np.floating): + return str(x) + + opts = np.get_printoptions() + + if np.isnan(x): + return opts['nanstr'] + elif np.isinf(x): + return opts['infstr'] + + exp_format = False + if x != 0: + a = absolute(x) + if a >= 1.e8 or a < 10**min(0, -(opts['precision']-1)//2): + exp_format = True + + trim, unique = '0', True + if opts['floatmode'] == 'fixed': + trim, unique = 'k', False + + if exp_format: + s = dragon4_scientific(x, precision=opts['precision'], + unique=unique, trim=trim, + sign=opts['sign'] == '+') + if parens: + s = '(' + s + ')' + else: + s = dragon4_positional(x, precision=opts['precision'], + fractional=True, + unique=unique, trim=trim, + sign=opts['sign'] == '+') + return s diff --git a/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/polyutils.pyi b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/polyutils.pyi new file mode 100644 index 0000000000000000000000000000000000000000..c0bcc67847f6b466c8d4fcf6f9b323df736c1c5f --- /dev/null +++ b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/polyutils.pyi @@ -0,0 +1,11 @@ +__all__: list[str] + +class RankWarning(UserWarning): ... + +def trimseq(seq): ... +def as_series(alist, trim=...): ... +def trimcoef(c, tol=...): ... +def getdomain(x): ... +def mapparms(old, new): ... +def mapdomain(x, old, new): ... +def format_float(x, parens=...): ... diff --git a/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/setup.py b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/setup.py new file mode 100644 index 0000000000000000000000000000000000000000..b58e867a133f804fbaf0d31099258a11e29058aa --- /dev/null +++ b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/setup.py @@ -0,0 +1,10 @@ +def configuration(parent_package='',top_path=None): + from numpy.distutils.misc_util import Configuration + config = Configuration('polynomial', parent_package, top_path) + config.add_subpackage('tests') + config.add_data_files('*.pyi') + return config + +if __name__ == '__main__': + from numpy.distutils.core import setup + setup(configuration=configuration) diff --git a/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/tests/__init__.py b/LTA_openwebtext_dualt/mini_owt_logdirichlet/.venv_qwen35_uv/lib/python3.12/site-packages/numpy/polynomial/tests/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/LTA_openwebtext_dualt/mini_owt_logdirichlet/cache/owt_t5_stream_pack1023_ultraclean_probe80k_rowvalid_rejected_rows.txt b/LTA_openwebtext_dualt/mini_owt_logdirichlet/cache/owt_t5_stream_pack1023_ultraclean_probe80k_rowvalid_rejected_rows.txt new file mode 100644 index 0000000000000000000000000000000000000000..713e8d9a8acd657f7138a1b6afa587e21004af71 --- /dev/null +++ b/LTA_openwebtext_dualt/mini_owt_logdirichlet/cache/owt_t5_stream_pack1023_ultraclean_probe80k_rowvalid_rejected_rows.txt @@ -0,0 +1,155 @@ +worker=4 pack_row=4 ntok=1024 reason=punct_run>7(count=15,text=...............) text=to do it," said Glover, who taught a class at St. Anthony's in Kitimat on Wednesday and is teaching another class in the next few weeks. With files from the CBC's Daybreak North and George Baker. To hear the full story listen to the audio labelled: A group of Kitimat women crochet plastic bags into sleeping mats for homeless. Unless the WiFi is out beneath that rock you’re living under, you probably heard the news that sour beer extraordinaire Wicked Weed sold to big beer behemoth Anheuser-Busch InBev, sending shock waves through the nation’s craft beer circles and leading people to wonder if their massively-popular wild ales would be blended with Bud Light Lime to create the “Collaboration of Devastation!!!!” Yes, with four exclamation points. It’s all just hearsay, but stranger things have happened. See: Budweiser & Clamato Chelada. News of this merger hasn’t really been too positive for Wicked Weed thus far. They lost voting rights in North Carolina’s craft brewers guild. Many craft beer bars said “GET OFF MY LAWN” and plan to cease carrying their brand. Even their world-famous Funkatorium Invitational had to be postponed because so many breweries pulled out. One brewery told us they and many of their counterparts will instead be attending a live reading of “Fran Drescher Recites the Yellow Pages” which, they say, will be far less painful than supporting AB InBev. Meanwhile, at the Legion of Doom (ABI Headquarters), Mr. Luthor and company, like they do with all the breweries they purchase, wanted to make their newest acquisition feel warm inside in light of all this angst. So they put together a gift basket of goodies and had it rush-delivered to Wicked Weed’s front door. “It’s been a rough week, so it was nice to receive some love,” an imaginary Wicked Weed representative said on the condition of anonymity. But when folks at Wicked Weed opened the basket, the contents...well, they were a bit confusing. This list is not complete, but allegedly, here’s what the gift basket contained: An industrial-sized bag of Sour Patch Kids with a post-it note that said “for dry-hopping purposes” Three boxes of Warheads (the sour candy, not the metaphorical warheads ABI has earmarked for craft beer) A copy of Mein Kampf Lemon slices An autographed photo of August Busch IV standing next to a baby seal with a club WAIT WHAT’S HE DOING?!?! A black talisman with a message that says “If you ever need me, hold this up to the sun for 10 seconds.” – Stan “Who the hell is Stan?” “Wait...there’s an A between the S and the T...............” And a Bud Chelada...because obviously no sane human being is buying that shit. Right? RIGHT?!? Might as well gift it. “I’m not sure if they really know what we do here,” the perplexed Wicked Weed representative admitted. Not too certain on what to do with the “gift,” the team at Wicked Weed has listed the basket and its contents on Craigslist. “The going market for black talismans with a Satan engraving is pretty high right now, so we’re hoping people will look passed the fact that they’ll be supporting AB InBev and give us a call on this stuff,” the Wicked Weed rep concluded. The Stuck Mash is a thing on Breaking Brews consisting of words, sentences, and paragraphs. Its contents represent a tapestry of flavors, textures, aromas, and moments designed to illuminate the mind, the body, and the spirit. OK, full disclosure: It’s a parody of some shit. But with this one...I could actually see this happening, couldn’t you?! Excerpted fromGrowing Up bin Laden: Osama’s Wife and Son Take Us Inside Their Secret World,by Najwa bin Laden, Omar bin Laden, and Jean Sasson, published this month by St. Martin’s Press; 2009 by the author. Since the time I could observe and reason, I have mainly known my father to be composed, no matter what might be happening. +worker=1 pack_row=34 ntok=1024 reason=too_many_urls(count=3,max=2) text=medical, dental, etc.)—all while maintaining the energy, agility and fun of a start-up. We can help with relocation and are open to H1-B transfers. New Relic is most decidedly an equal opportunity employer. We eagerly seek applicants of diverse background and hire without regard to race, color, gender, religion, national origin, ancestry, citizenship, individuals with disabilities, age, sexual orientation, protected veterans, or any other characteristic protected by law. Note: Our stewardship of the data of many thousands of customers means that a criminal background check is required to join New Relic. To get started, click on the link below. To fast track your application, let us know in your cover letter why this job, product, and/or company is of particular interest to you. We look forward to talking! Apply Here: http://www.Click2Apply.net/pztm88p Peruvian authorities have ordered the preventative evacuation of 4,000 people living near the Ubinas volcano, which has been spouting ash clouds up to two miles (nearly 4km) high. Peruvian authorities have ordered the preventative evacuation of 4,000 people living near the Ubinas volcano, which has been spouting ash clouds up to two miles (nearly 4km) high. The Andina state news agency quoted Agriculture Minister Juan Benites as saying it will take three days to move the residents of two southern districts and their 30,000 sheep, cows, horses, burros and other animals. Peru's health ministry said about 40 people have complained of eye inflammation and stomach problems from ash that has been falling from Ubinas since March 29. The 18,609ft (5,672m) volcano is Peru's most active. It most recent strong eruption period occurred from 2006-2009. Press Association As part of the Vault 7 series, WikiLeaks released a set of documents that is essentially a user manual for a set of hacking tools belonging to the CIA. The hacking tools are capable of infecting air-gapped PCs via USB drives and are collectively named as the Brutal Kangaroo. Brutal Kangaroo Brutal Kangaroo is not just a single hacking tool. Rather, it is a collection of tools that are designed to execute a very complicated attack that can affect air-gapped PCs – PCs not connected to the internet – through an infected USB drive. [irp posts=”54440′′ name=”Cherry Blossom: WikiLeaks’ Latest Dump Exposes CIA Wireless Hacking Tools”] Drifting deadline is one of the tools that is the primary starting point of creating malware. This is followed by Shattered Assurance which automates the generation of malware created from Drifting deadline through USB drives. Next, comes Shadow, which allows the attacker to control and coordinate the attack. Lastly, Broken Promise is used to extract data from the infected systems. [irp posts=”29081′′ name=”8 Technologies That Can Hack Into Your Offline Computer and Phone”] How does it work? According to the user manual, CIA can start off an attack through Brutal Kangaroo by using Drifting Deadline to generate and inject malware. The malware thus created is used in a two-staged process to infect air-gapped computers. Initially, the attacker, or in this case the CIA, can infect a targeted computer called the primary host. The malware is injected into this PC and when a user inserts a USB drive into it, the malware, through Shattered Assurance generates a more powerful virus and loads it in the USB. Once the user inserts this USB into another PC, the more powerful malware affects this new PC, and the chain goes on depending on how many more computers share the USB. Reports say that the tools have already been used by a hacking group called Longhorn and that around 40 instances of hacks have been found in 16 countries. RELEASE: CIA 'Brutal Kangaroo' and 'Emotional Simian' USB air gap jumping viruses https://t.co/dHDfcHQWIv pic.twitter.com/xU6e3ucPB6 — WikiLeaks (@wikileaks) June 22, 2017 What vulnerabilities are exploited? According to the documents, the second-stage malware exploits certain LNK files on Windows. These files execute the malware once they are +worker=9 pack_row=42 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=his eye on the hoodie that Marian Wright Edelman, founder of the Children’s Defense Fund, wore in solidarity with protesters, The Post reported. The National Museum of African American History and Culture is set to open in 2015 and will display objects related to the Civil Rights Movement, such as the handcuffs used to restrain Harvard professor Henry Louis Gates Jr. Copyright 2019 The Washington Times, LLC. Click here for reprint permission. Feb 24, 2016 Comments are off By Sid Sharma @SidSharma I was surprised (to put it mildly) when I found out that there was an Indian American PAC dedicated to the electoral victory of Donald Trump. The shock comes from looking at a well-known statistical picture: most Indian Americans vote Democrat and have done so overwhelmingly for the last few elections. Nevertheless, I came across an organization called Indian Americans for Trump 2016 that is advocating for the New York developer. I chatted with the leader of the group, A. D. Amar – who by day is a Professor of Business at Seaton Hall University – to understand how he came to be a Trump Republican, to figure out how Trump’s economic policy would actually work, and asked him pointedly if his candidate’s tone and policies are unnecessarily divisive and exclusionary. Sid Sharma: Tell me about yourself. What was your political journey? A.D. Amar: I was born and raised in India and I came here as a student. At that time all Indians were so enamored with Kennedy that we all believed the Democratic party was the right party. For example, I thought Jimmy Carter would be a very good president. He was an engineer, a businessman, an honest person, hard-working farmer, and so on. But when I saw him in office, I changed my mind. We really don’t want a person who is nice. We want a person who knows how to deal with the rest of the world and how to protect American interests. From the time of Reagan onwards, I have been a Republican. I ran as a Republican for Congress from New Jersey’s 7th district in 2008. SS: What initiatives is your organization working on? AD: Our main goal is to educate and provide information to the Indian community about Donald Trump. Not just the Indian American community but to the general population. We are not collecting any money and don’t have any plans to collect any money, because Trump does not want any money from the PACs. SS: Given that the Indian American community has voted for the Democratic Party so overwhelmingly in the last election, what is it about Trump that can attract those votes? AD: The reason many people supported Obama was because they thought Obama was a non-traditional politician. For example, during his 2008 campaign, he had openly condemned lobbyists and political campaign contributions. But we didn’t get any change. It’s the same feeling among many Americans, particularly working Americans, who believe they have been cheated out of their right to have a good life. SS: Even some conservative groups such as the Club for Growth have called Trump an economic isolationist. How would you defend your candidate? AD: If it is isolation, we’ll be better off as a country. By not being isolationist, we have been losing trillions of dollars every year to these other countries who simply say, “Oh, you can’t be isolationist, and you have to keep engaged.” SS: Does Trump’s tone make America look intolerant? AD: All right, fine. Let me first address the international affairs part of your question. We in fact want a president who has some attitude. America should be portrayed as an exceptional country. I definitely believe that is a big plus on part of Donald Trump. We already noticed his domestic tone change and it will stop as we go further into the primary process. He will try to be a different person. He has already said on a few occasions that his tone will be different. SS: What advice would you give Trump as he gets ready for Super Tuesday? AD: Just don’t do anything that annoys people. That’s it. Just stay calm and behave like a front runner. Behave like a leader. Responses edited for brevity and clarity. (AsAmNews is an all-volunteer effort of dedicated staff and interns. You can show your support by liking our Facebook page at www.facebook.com/asamnews, following us on Twitter and sharing our stories.) It was a different era. Journalists roamed freely in the company of the +worker=6 pack_row=72 ntok=1024 reason=too_many_urls(count=3,max=2) text=really this angry?" On one particularly insulting letter for a female student She eventually does become very successful. I think he resents her abilities. He's writing letters for her, but begrudgingly. He knows that she's going to make it with or without his help, and so his letters actually provide very little assistance to her. On Fitger's frustration with the emphasis on the market value of an education [It's] a frustration I have felt, you know, the emphasis on the STEM fields — science, technology, engineering, math — there's a bit of a feeling of an end of an era in American arts and letters, or at least a sort of time of crisis. We're supposed to have a computer in every kindergarten classroom, but where does that leave the future of literature, foreign languages, theater, you know — we're also just at a point, I think, of educational crisis in terms of the cost of an education. It's a very difficult time right now in higher ed. [HEADLINE]TOP 2014 teams by Prize Money[$]:[/HEADLINE]I focused on teams as players, not as organizations.1 NIP 229,861 (1 major championship)gtr 57,500frst 53,684frbrg 53,684xzt 53,684mkl 11,3092 VP 221,45 (1 major championship)neo 44,626taz 44,626psh 44,026bly 44,626snx 43,5463 LDLC 202,428 (1 major championship)nbk 40,360smz 40,360shx 43,254hppy 41,84kio 36,6144 fntc 194,46 (many scandals)jw 38,416fls 38,446prx 38,596olof 39,501krmz 39,5015 dgnts 86,041xp9x 18,524dprh 18,524ftsh 18,524dvc 18,117cjb 12,352VP are the only team who did not change line up for the whole 2014 year. Nip changed 1 player. LDLC changed 2 players. Fnatic also 2.The most stable top team of 2014 award goes to VP. Also Props to NiP for 1st place.There is no better ranking to sum up a year than prize money. It is natural the biggest prize money make teams prepare the best.The worth mentioning fact is the all top3 teams have got above 200k and are very close to each other. 1 map d end with different results and top3 d be different. We can say VP was 1 round close to beat NiP.Other teams are so far behind and mixed after roster changes it makes no sense to make tables for them (unless you really want so make it and i ll paste it)Source: http://www.esportsearnings.com/games/245-counter-strike-global-offensive NOW that's a #fontfail if ever there was one. Channel 7 might want to consider a tiny bit more space between the letters promoting their "Grand Final" episode, with Twitter fans suggesting the promo read more like the title for a bad porno than a reality show finale. Fox FM presenter and comedian Adam Richard was quick to grab a screenshot of Channel 7's promo tile for the "Grand Final" of The X Factor, highlighting the ambiguous lettering. unfortunate font choice for #XFactorAU final - it does say FINAL doesn't it? not... oh no... http://t.co/5H2Ck8FFkg — Adam Richard (@adamrichard) October 20, 2013 I shall be watching the #XFactorAU SEMI-ANAL in a moment. Mute hashtag or play along in eastern states that have daylight saving. — Adam Richard (@adamrichard) October 20, 2013 Other Twitter users had also picked up on the font fail, spreading the "word" on the social networking site. Did no one at the #XFactor2013 design dept realise tight kerning transforms a grand final into a grand anal? pic.twitter.com/6m9H0eIi49 — Troy Coleman (@CrimsonPlatypus) October 16, 2013 X Factor needs to +worker=11 pack_row=108 ntok=1024 reason=top_token_frac>=0.080(frac=0.095,count=97,token=) text=an assumed but mutually conflicting definition left uncheck can lead to a hidden amount of work for you later on. Everything has to be built, and building things always takes time. And that time, well, you get paid for it. So make sure you get clarity here. We need a website. Authentication to the site. Facebook integration A store and CMS An order aggregation function An aggregation function over all orders A way to sort by date with a limit A (probably) ajax cart system Definition of abandoned cart, etc Cart commitment, change of state Eat24 integration User needs to be a part of Eat24 somehow somewhere. Step 5. Set the Priorities. Go back to the client, find out how important these tasks are and how much they value them. You need to understand what part of the story is more important than others. Setting priorities at this point instead of earlier allow for the client to have more of an insight into how significant a task may be. When someone understands how long something could take and generally what trouble it is, they can often change their values. High value We need a website. Authentication. A store and CMS A way to sort by date with a limit Cart commitment, change of state Eat24 integration User needs to be a part of Eat24 somehow somewhere. Medium value A (probably) ajax cart system Definition of abandoned cart, etc Low value Facebook integration An order aggregation function An aggregation function over all orders Step 6. Range Estimates. Use this as an basis for how much effort you should put into each task and do range estimates. Sometimes a client is willing to do something you would personally think is a phenomenal waste of cash. Other times, they may simply just not care about something you think is really important. Part of your job is to communicate your professional engineering opinion in order to get to a successful outcome. Breaking down things like this and telling the client your estimates help keep that clear and coherent. Giving a range is important since some things have a very high variance. In making estimates, you should ask yourself the following: How long does this take if everything goes well? What's the longest this has taken me when I encounter nothing but problems? Use these answers to form a low and a high end to your estimates. Tell the client both. High value ( 10 - 12 hr ) We need a website. ( 2 - 4 ) Authentication. ( 6 - 9 ) A store and CMS ( 1 - 3 ) A way to sort by date with a limit ( 6 - 9 ) Basic cart, Cart commitment, change of state ( 4 - 7 ) Eat24 integration ( 0 - 4 ) User needs to be a part of Eat24 somehow somewhere. Medium value ( 2 - 4 ) A (probably) ajax cart system ( 1 - 4 ) Definition of abandoned cart, etc Low value ( 1 - 3 ) Facebook integration ( 2 - 4 ) An order aggregation function ( 2 - 4 ) An aggregation function over all orders Step 7. Arrange Estimates into Weeks. Programming is hard and exhausting. There are lots of other administrative tasks you need to do in a project besides writing the code. Leave empty time in the week for that by setting aside smaller weeks. Use the higher numbers to do the calculations and try not to commit yourself to over about 25 hours a week. Week 1 (18 - 25 hours) ( 10 - 12 hr ) We need a website. ( 2 - 4 ) Authentication. ( 6 - 9 ) A store and CMS Week 2 (11 - 23 hours) ( 6 - 9 ) Basic cart, Cart commitment, change of state ( 1 - 3 ) A way to sort by date with a limit ( 4 - 7 ) Eat24 integration ( 0 - 4 ) User needs to be a part of Eat24 somehow somewhere. Week 3 (8 - 19 hours) ( 2 - 4 ) A (probably) ajax cart system ( 1 - 4 ) Definition of abandoned cart, etc ( 1 - 3 ) Facebook integration ( 2 - 4 ) An order aggregation function ( 2 - 4 ) An aggregation function over all orders Step 8. Commit to the Estimate. You need to give yourself plenty of room here because however careful you've been You've left things out. The client will ask for more, and expect it to be covered in the initial estimate You want to come in under time and under budget. Quoting a high number and billing less makes you look +worker=10 pack_row=117 ntok=1024 reason=top_token_frac>=0.080(frac=0.080,count=82,token=) text=on information gleaned from images. Take a recent case involving a rash of livery cab robberies in the Bronx where drivers were being held up at gunpoint. Police said the suspect called for a ride, jumped in the back seat and immediately brandished a revolver, which he pointed at the back of drivers' heads. The cops were stymied and there was fear that the next robbery might end in violence. They had a rough description of the man — between 50 to 55 years old and about 5-feet-10, wearing a green army baseball cap and a green Army shirt. During one of the heists, on Feb. 28, near 515 Rosedale Ave., the cops retrieved a photo of the suspect from a camera on the dashboard of the livery car. The NYPD's Facial Recognition Unit used this photo to catch Alan Marrero, who was arrested in connection to a string of livery cab robberies. View Full Caption DNAinfo The detectives shipped the image to the Facial Recognition Unit inside Police Headquarters, where it was scanned through a database of mug shots. Within hours, they had a possible match — Alan Marrero, 54, an ex-con with a long history including two stints in state prison for burglary. Facial Recognition hits are not legally considered “probable cause” for cops to make an arrest, but it provides investigators with a roadmap to follow to obtain other photographs to present to victims to identify suspects. On March 7, four days after the most recent robbery, Marrero was picked up at his home on Bainbridge Ave. and charged with three robberies. He is presently being held on Rikers Island on $25,000 bail. In Manhattan, several thugs crashed their way into the home of an elderly couple in Washington Heights, beating them until they revealed where they hid their life savings of $30,000. The couple did not trust banks, and the thugs had heard about it. A surveillance camera in an elevator captured an image of one of the thieves. The unit’s futuristic software spit out a match along with a name — David Baez, 31, a convicted robber who spent seven years in jail after putting a knife to a subway rider's throat during a robbery. He was paroled in November 2011. Investigators quickly determined that Baez also fit the description of a thug wanted in the Feb. 9 beating of a Bronx man who was robbed of his cash and iPhone. Although Baez has not been charged in the Manhattan incident, cops tracked him down and charged him for the Bronx case. Baez is presently being held on Rikers Island, facing at least three years in jail for violating his parole, in addition to robbery and gang assault charges in the February assault. Facial recognition, however, is not foolproof. The best results occur when images submitted to the unit are reasonably clear and primarily taken straight on. But with surveillance cameras virtually everywhere now and the widespread popular posting of photos on social networks, the NYPD is increasingly getting its hands of usable photos to help them identify possible criminals. “We are solving tons of cases now thanks to the technology,” a veteran police official said. “We get a nickname of someone and track him on social media and now we have a photo and then hopefully a name. “It's really changing the way we operate,” he concluded. Through hip-hop, Kang Chun-hyok raises awareness about conditions he escaped as a child. He has agreed to answer your questions about human rights, life as a defector and his music Kang Chun-hyok is rarity; a young defector from North Korea who is forging ahead with a career as a rapper. He arrived in the South at the age of 16 – one of the 25,000 estimated to have made the journey over the past 20 years – and is now studying art at Hongik University whilst pressing ahead with his music. He has said he has ambitions to be the best rapper out of North Korea – a career that few of his peers would ever even dream of pursuing. Music in the North, like much of the arts, is little more than a patriotic medium celebrating the state. Kang has recently teamed up with Yang Dong-geun, a hip-hop artist and actor from the South, who has said he believes that hip-hop is a great avenue for North Korean +worker=6 pack_row=137 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=FAQ page for information in regards to running tutorials properly. $begingroup$ This is a specific version of the great cancer question: "Why are some cancers more common than others?" The answer is either "Some have more common causes", and (or) "Some are cured spontaneously more often". So now all you are asking is "What causes cancer?" and "How do we cure it?" Given that, I don't expect a general definitive answer will be forthcoming. A specific answer might be possible, but I doubt there will be any existing experiments that address this. With the obvious caveat that only experimental or statistical results can really answer your question, here are a couple of off-the-cuff hypothesis for consideration: 1 - Differences in stem cell populations. Apparently, differentiation can actually be targeted as part of a treatment in some neuroblastoma cases - see the section on "Differentiation therapy" in this page from Sloan-Kettering. Cardiac stem cells seem to exist, but a difference in relative population and turnover rates between brain and heart might be related to the relative frequencies of these types of cancers. @WYSYWIG referred to neural progenitors in his comment above. 2 - A filtering effect due to a more extreme selection pressure in the uniformly stressful environment of the a beating heart. Although there is a relation between elevated levels of oxidative stress and cancer causing mutations, it could be that this only matters in a punctuated stress environment, where cells have down time to recover. A sustained stress environment might actually helps prevent cancer. The path from normal to cancer cell requires multiple mutations, and I would not expect most pre-cancerous cells to be more fit than correctly wired ones. The extra stress of the cardiac environment might produce an elevated mutation rate, but also produce an even higher rate of apoptosis in early "sick" cells before they accumulate enough mistakes to become become cancerous, resulting in a net decrease in the rate of cancer. Both of these ideas fit with heart cancer being less common and with metastasis from elsewhere being more common in heart than primary cancer, but unfortunately, a higher rate of clearing of sick cells would necessitate a higher rate of replacement from stem cells, so these two hypotheses partially cancel each other. Again, hypotheses without experiments are not really answers. On the sunny California coast, known to be a playground for people and an important habitat zone for many marine species, researchers from the University of California Davis and rangers in the Ao Nuevo State Reserve have successfully monitored and tracked a colony of 72 Elephant seals over a period of 2 months. The (p)H1N1 virus was found in 2 when the second swabs from 42, 2 of which were transient females, were taken on their return from over a month at sea and antibodies specific to combating the (p)H1N1 strain were found in all of them. Over the last 33 years it has been known that Influenza A Viruses have been able to spread from marine mammals to humans, cases dating back to the winter of 1979 when harbour seals were dying of acute pneumonia (found to be H4N5) which then affected and killed the people who were involved in the handling of the carcasses for disposal (shown to be H7N7); to the last in 2011 (H3N8). Multiple cases of other influenza A viruses have been found in other colonies of seals as well as in a stranded whale; over 900 other samples were tested between 2009 and 2011 from seal colonies along the Pacific from California to Alaska. Frozen archived samples have been sequenced and tested (a total of 129) from stranded seals that have been rescued and released were also tested after the results from these elephant seals came back. Of all these tests it has shown an increase since April 2010, of the antibodies by up to 40% in adults and While this strain appears to be seal specific, as in it has adapted itself to target seals, it is still the H1N1 influenza A virus that has been found in avian, swine and human populations because comparisons of the gene sequence were compared against known sequences from 6 sources (5 swine and 1 avian), the reason they know this (p)H1N1 strain is seal specific is because the sequences were cultured on human liver slices and found they did not survive, or more correctly did not have enough of itself to replicate and adapt. The importance of this to anyone handling marine mammals is obvious, personal protection is there to protect them from anything we may +worker=0 pack_row=147 ntok=1024 reason=too_many_urls(count=4,max=2) text=, Pocahontas State Park hosts a New Year’s Eve to New Year’s Day hike that begins Dec. 31 at 11 p.m. and ends with a New Years bonfire and a sparkling cider toast. On New Year’s Day, Pocahontas will offer five other hikes, including a stroller-friendly hike, an advanced hike, a First Day Run, an orienteering hike, as well as a hike for family and friends. Other parks with multiple hikes and difficulties include Bear Creek Lake, Holliday Lake and Twin Lakes state parks. Some of the more unique hikes include Grayson Highlands State Park, with the possibility of seeing wild ponies. Guaranteed to be colder than other parks, hikers flock to the park for the challenge, the view of snow-topped mountains and the ponies. New River Trail State Park will feature a hike and bike on the new mountain biking trail. At False Cape State Park, hikers will take the Terragator, the beach transport vehicle, down the beach and then hike to the North Carolina border. Hikers can see bison at Wilderness Road State Park and amazing geological formations at Natural Tunnel and Natural Bridge state parks. The hike at Southwest Virginia Museum Historical State Park includes a tour of the historic town of Big Stone Gap. Virginia State Parks welcomes bikes and horseback riders at parks with those facilities. Leashed dogs are welcome everywhere except False Cape State Park. Details for all hikes can be found here: http://bit.ly/VSPFDH2018. For more information about Virginia State Parks activities and amenities or to make a reservation for one of the more than 1,800 campsites or 300 climate-controlled cabins, call the Virginia State Parks Customer Care Center at 800-933-7275 or visit www.virginiastateparks.gov. Mandalay Bay & MGM Ban OnSite Investigator – Armed Guards & FBI Agent Throw Him Out Of His Room An independent onsite investigator by the name of Nick Falco decided to stay at the Mandalay Bay hotel and casino and investigate things pertaining to the Las Vegas shooting. He was subsequently banned from the hotel, as well as MGM for life and escorted out of his hotel room by armed guards and an FBI agent. The actions of Falco and the hotel occurred within 24 hours of his arrival. Falco tweeted out his investigation (his tweets require approval to be seen, but I have linked them below), along with the ban he received from Mandalay Bay & MGM. “I questioned the #LasVegas shooting narrative. I went to Mandalay Bay to check for myself. After 24 hours I was banned for life from MGM,” tweeted Falco, providing the following picture to prove his ban: https://t.co/AEdgzRGfG8. Falco spoke with Intellihub and sought to confirm certain things, including the validity of the receipt that was leaked online from Stephen Paddock’s room. Intellihub reports: Falco told Intellihub exclusively that he received a phone call from the front desk of Mandalay Bay shortly before 7:30 p.m. in which a female operator instructed him to answer his hotel room door where four men (two armed guards, a security guy, and an FBI agent) simultaneously met him. Falco was then told to pack up his belongings before the FBI agent conducted a subsequent inspection of his room. Soon after the independent investigator says that he was escorted over to the main entrance of the Mandalay Bay where a security guard stood him in front of a camera and verbally read him the trespass. During Falco’s visit, he was able to prove that the leaked online version of Stephen Paddock’s room service receipt was, in fact, “authentic” after comparing it to a receipt he himself received after ordering room service Saturday morning. Here’s the series of tweets from Falco with links to each tweet. 2. I stayed at Mandalay Paddocks room service receipt was leaked online. It is authentic.https://t.co/us9zDGoU57 Here’s mine- ONE guest pic.twitter.com/JEAyuEzpKM — Nick (@Nick_Falco) October 15, 2017 3. There’s 1000s of surveillance cameras in gaming area, mostly visible There’s a surveillance camera in each main elevator. You cant hide pic.twitter.com/qXeOlORYUb — Nick (@Nick_F +worker=10 pack_row=152 ntok=1024 reason=top_token_frac>=0.080(frac=0.081,count=83,token=) text=Article claimed Mr Boyle had been 'forced to quit' Mock The Week Comedian, 40, reveals he will donate the money to charity Comedian Frankie Boyle was awarded more than £54,000 damages today after a High Court jury found he had been libelled by a newspaper which had described him as 'racist'. The jury concluded that Mr Boyle, 40, from Glasgow, had been defamed by the Daily Mirror. After the verdict, the comedian gave a V-for-Victory sign on the court steps and revealed that he would be donating the money to charity. Scroll down for video 'Very happy': Comedian Frankie Boyle gives a 'V-for-Victory' sign as he leaves the High Court after being awarded more than £54,000 damages following his libel battle with the Daily Mirror Mr Boyle said he had sued because he had always 'made a point' of being 'anti-racist'. He had claimed that a Daily Mirror article published on July 19 last year defamed him by describing him as 'Racist comedian Frankie Boyle' and saying he had been 'forced to quit' BBC panel show Mock The Week. Daily Mirror publisher Mirror Group Newspapers (MGN) defended the article, arguing that the 'racist' description was either true or 'honest comment on a matter of public interest'. MGN also argued that the words 'forced to quit' did not mean that Mr Boyle had been sacked and were not defamatory. But jurors ruled in Mr Boyle's favour after a week-long trial in London. Action: Mr Boyle said he had sued because he had always 'made a point' of being 'anti-racist' They awarded Mr Boyle £50,400 damages for the 'racist' assertion and a further £4,250 in relation to the claim that he was 'forced to quit' the BBC show. Mr Boyle was also awarded legal costs, estimated to be in the region of £100,000. During the hearing, the jury was shown a series of the comedian's jokes from Mock The Week and his Channel 4 show Tramadol Nights. After the verdict, Mr Boyle tweeted: 'I'm very happy with the jury's decision and their unanimous rejection of the Mirror's allegation that I am a racist. Donation: In messages posted on Twitter, Mr Boyle said he was 'very happy' with the jury's decision and would be giving his damages to charity 'Racism is still a very serious problem in society which is why I've made a point of always being anti-racist in my life and work and that's why I brought this action.' MGN lawyers had told jurors that Mr Boyle was a 'racist comedian' who gratuitously exploited negative stereotypes of black people for 'cheap laughs'. A barrister representing MGN, Ronald Thwaites QC, said the comedian was 'callous' and 'insensitive'. He said jurors should not find in the comedian's favour but, if they did, they should show their 'contempt' by awarding damages of 45p - the price of a copy of the Daily Mirror. Mr Boyle denied 'punctuating' material with racist references or making 'gratuitous' use of black people. He told jurors that characters he played might express racist views, but he did not. He said he actively campaigned against racism and parodied racists - and claimed that the Daily Mirror had 'misunderstood' the context of his use of language in jokes. Mr Boyle's counsel, David Sherborne, told the court that the comedian's humour was 'deliberately challenging', and he would not have minded if his material had been called 'vile', 'tasteless' or 'offensive', because that 'went with the territory'. But he did object to being called a 'racist', Mr Sherborne added. Panel show: Frankie Boyle (top left) appeared on Mock The Week with fellow comedians Andy Parsons (top right), Hugh Dennis (bottom left), Dara O'Briain (centre) and Russell Howard (bottom right). A +worker=12 pack_row=162 ntok=1024 reason=top_token_frac>=0.080(frac=0.084,count=86,token=) text=can now run away in the dark and crouch and lose enemies. No more zombie GPS! Added a campfire cooking system with many newly and improved recipes. The system uses 4 cookware including a cooking pot, grilling plate, sharp stick or chemistry beaker. Having a specific cookware combined with your ingredients unlocks new recipes. Added a new horde spawning system where player’s noises contribute to the possibility of a horde spawning. Zombies no longer no exactly where you are day or night. Added a new loot opening timer system. Crouching will take longer to open a loot container but make less noise. Take all gathers items quicker but makes more noise. Added crafting time for crafting which improves the survival experience. Added a new lighting model which allows point lights in the world and flashlights and torches to look better. Added a flashlight binding key ‘F’ which toggles on and off your flashlight or new mining helmet if you have. Added LOD for trees and large bushes and a slider in the video options that can be tuned to boost performance Added new player spawn rules: New players in coop spawn near other players. Solo players spawn at start points. New players in PVP spawn at the nearest spawn 100 meters away from other players. If you quit and rejoin it spawns you where you were at. When you die if you don’t have a bedroll its spawn you randomly 75 meters away from your death location. If you a bedroll and dies a selection comes 1. Spawn at bedroll 2. Spawn near from bedroll (75 meters away) Added new drop on death and quit options drop nothing, everything, tool belt and backpack only. Added new player dropped backpack model and map icon so you can find your loot. The system only displays your last dropped backpack and the backpack stays in the world until it’s emptied. Added start inventory of one water bottle and one can of chili Added regular zombie, fat zombie and snow zombie idle, walk and pain animations Added glass jar forging & molds, windows now have a chance to drop broken glass items that can be collected and melted into glass objects Added in an industrial wall light and fluorescent ceiling light Added model and icon for crushed sand Added Goldenrod Tea, charred, grilled and boiled meat recipes Added campfire and cook pots to the cabins Added new stone hit sound set Added Glass window forging Added ‘Destruction’ group in the creative menu and icons which contains all destruction sets Added preview icons for all existing building destruction sets modular sets Added impact particle effects for various materials vs snow terrain and block destroy effect for snow Added mining helmet to loot Added impact particle effects for stone vs various materials Added gravel recipe from destroyed concrete Added new icon for Coal Ore Added four variation set of steel sink faucet models Added brass version of sink faucet set Added gravel underground and reduced its stability so it can cave in making natural ore veins Changes Changed the flashlight and torch to useable melee weapons Changed Rotated wood planks and rich wood so it tiles on stairs correctly Changed pig, rabbit and stag art Changed zombie hand animations to be more lifelike Changed sand so it can no longer make glass, but it can be crafted into crushed sand which can be used with the new glass forging system Changed Player punch does much less block damage Change Removed recipe to make empty jars from sand and thin metal plates Change lowered health regeneration rate Change filling water bottles now gives you river water instead of pure water Change water can be boiled into pure water in the cooking pot Change removed glass pane recipe from sand Change removed bed frame recipe Change reduced chance to find backpacks, purse, suitcases, etc Changed Rotated white and black woods so they tiled better Changed Log blocks only yield 2 wood planks instead of 4 Changed Log spikes only yield 1 wood plank instead of 2 Changed Slowed fire rate of knives and improved animation Changed Slowed rate of fire on stone axe and improved animation Changed ore to be several clusters Changed weight of iron ore to 96 ounces instead of 432 ounces since it is found in clusters Changed stone stairs to be cobblestone stairs Changed gunpowder and gas can recipe to be made with chemistry Changed all prefabs in the world to use new smooth terrain blocks where applicable Changed all destroyed and burnt buildings in the world +worker=13 pack_row=164 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=publisher said Wednesday. Mr. Hannity offered the radio gig to Mr. Assange during a public Twitter exchange on Wednesday, and the WikiLeaks chief told CNN afterwards that he hadn’t ruled it out. “I’m looking into it,” Mr. Assange told CNN over Twitter. “My physical circumstances means that nothing is easy.” “It is a good sign that Sean Hannity is willing to have someone best known for his work on freedom of expression and exposing war crimes in Iraq and Afghanistan host his mostly conservative audience,” Mr. Assange added, according to a copy of the exchange released through his personal Twitter account Thursday. The WikiLeaks chief piqued Mr. Hannity’s interest earlier this week after tweeting about the possibility of hosting a program from his residence within Ecuador’s Embassy in London. “Several U.S. networks suggest I start a weekly radio broadcast/podcast from within the embassy siege. A good idea? Ideas for format, title?” Mr. Assange tweeted Tuesday. “If you would like to fill in for me one day I am on over 550 stations and 14 plus million listeners,” Mr. Hannity responded from his official Twitter account Wednesday. When WikiLeaks first made headlines in 2010 for publishing thousands of leaked State Department cables, Mr. Hannity accused Mr. Assange of “waging war against the U.S.” and called for his arrest. He changed course last year, however, after WikiLeaks released documents detrimental to the campaign of former Democratic presidential nominee Hillary Clinton. “In 10 yrs @wikileaks has gotten nothing wrong & no one’s been killed bc of the info released,” Mr. Hannity tweeted in October. The U.S. intelligence community concluded in January that Russian state-sponsored hackers compromised computers used by Mrs. Clinton’s campaign as well as the Democratic National Committee ahead of last year’s White House race, then pilfered sensitive documents ultimately provided to WikiLeaks for publication prior to Election Day. “I can’t comment on other people’s statements about our sources, except to say what we have said, which is that our sources are not a state party,” Mr. Assange told Mr. Hannity during an interview in January. Mr. Assange, 45, was granted asylum by Ecuador in 2012, but has been unable to leave its London embassy in the years since without risking arrest at the hands of British authorities. London police have been instructed to arrest Mr. Assange for allegedly violating the terms of his parole by seeking refuge there, and the WikiLeaks chief has said he fears any attempt to take him into custody will inevitably lead to being extradited stateside and indicted for disclosing U.S. government and military secrets. Copyright 2019 The Washington Times, LLC. Click here for reprint permission. Police identify man killed in officer-involved shooting in Roy ROY, Utah — A 35-year-old man is dead after an officer-involved shooting in Roy Tuesday morning. The case is being investigated as a suicide by cop, according Roy police. At approximately 4:04 a.m. officers were dispatched to the area of 3700 West and 5300 South on a threatened suicide that was reported to the Weber County Consolidated Dispatch Center from the suicide hotline. Police say a negotiator from the Weber Metro SWAT team attempted to negotiate a peaceful and non-hostile end for several hours. Negotiation with the Roy man ultimately failed and shots were fired by members of the SWAT team, police say. The man succumbed to his injuries at 11:15 a.m. Police identified the man Wednesday as 35-year-old Jose Calzada. Police say there were other individuals in the home at the time the original call was placed but they left shortly after – the man was the only one inside the home at the time of the shooting. The Weber County Officer-Involved Fatality Protocol has been implemented and the investigation has been turned over to the Weber County Attorney’s Office. More information will be provided as it becomes available. Here and elsewhere you can find hundreds of articles offering advice for starting , thriving in relationships, ending relationships, and recovering after a relationship ends. Largely absent from these conversations are those who avoid relationships or are too uncomfortable to express their feelings while in a relationship. Sure, there are posts about perpetual bachelors and about loving yourself when you’re single, but even these single-person posts miss an important subset of people – those who are uncomfortable, avoidant +worker=11 pack_row=190 ntok=1024 reason=top_token_frac>=0.080(frac=0.086,count=88,token=) text=glances -t 2 Glances Color Codes Meaning of Glances color code: GREEN : OK (everything is fine) BLUE : CAREFUL (need attention) VIOLET : WARNING (alert) RED : CRITICAL (critical) We can set thresholds in configuration file. By default thresholds set is (careful=50, warning=70 and critical=90), we can customized as per our needs. The default configuration file is located at ‘/etc/glances/glances.conf’. Glances Options Besides, several command line options, glances provides many more hot keys to find output information while glances is running. Below are the list of several hot keys. a – Sort processes automatically c – Sort processes by CPU% m – Sort processes by MEM% p – Sort processes by name i – Sort processes by I/O rate d – Show/hide disk I/O stats ols f – Show/hide file system statshddtemp n – Show/hide network stats s – Show/hide sensors stats y – Show/hide hddtemp stats l – Show/hide logs b – Bytes or bits for network I/Oools w – Delete warning logs x – Delete warning and critical logs x – Delete warning and critical logs 1 – Global CPU or per-CPU stats h – Show/hide this help screen t – View network I/O as combination u – View cumulative network I/O q – Quit (Esc and Ctrl-C also work) Use Glances on Remote Systems With the Glances, you can even monitor remote systems too. To use ‘glances‘ on remote systems, run the ‘glances -s‘ (-s enables server/client mode) command on the server. # glances -s Define the password for the Glances server Password: Password (confirm): Glances server is running on 0.0.0.0:61209 Note : Once, you issue ‘glances‘ command, it will prompt you to define the password for the Glances server. Define the password and hit enter, you see glances running on port 61209. Now, go to the remote host and execute the following command to connect to a Glances server by specifying IP address or hostname as shown below. Here ‘172.16.27.56‘ is my glances server IP Address. # glances -c -P 172.16.27.56 Below are few notable points that user must know while using glances in server/client mode. * In server mode, you can set the bind address -B ADDRESS and listening TCP port -p PORT. * In client mode, you can set the TCP port of the server -p PORT. * Default binding address is 0.0.0.0, but it listens on all network interfaces at port 61209. * In server/client mode, limits are set by the server side. * You can also define a password to access to the server -P password. Read Also: Use Glances to Monitor Remote Linux in Web Server Mode Conclusion Glances is a much resources friendly tool for most users. But if you’re a system administrator who’d like to quickly get overall “idea” about systems by just glancing at command line, then this tool will be must have tool for system administrators. Garrison Keillor Accused Of 'Inappropriate Behavior,' Minnesota Public Radio Says Enlarge this image toggle caption Jeff Baenen/AP Jeff Baenen/AP Updated at 2:32 p.m. ET Garrison Keillor, the creator and former host of A Prairie Home Companion, has been accused of inappropriate behavior with someone who worked with him, according to Minnesota Public Radio, which has announced it is cutting ties with Keillor and his production company. In a statement released Wednesday, the NPR member station says it learned of the allegations in October and has retained an outside law firm to investigate them. That investigation is ongoing. In statements to the Minnesota Star Tribune, Keillor said that he "put [his] hand on a woman's bare back" and alleged that he had been groped by dozens of female fans. Keillor, 75, no longer hosts A Prairie Home Comp +worker=13 pack_row=185 ntok=1024 reason=too_many_urls(count=3,max=2) text=It is one reason there is still no reliable test to detect aggressive forms of prostate cancer, a bigger killer than breast cancer. Men’s health ranked 36th for federal government health research funding in 2012, behind sexually transmitted infections and just ahead of parasitic infections, an exclusive analysis by News Corp Australia shows. Since 2003 women’s health research received more than $833 million from the National Health and Medical Research Council compared to less than $200 million for men. Breast cancer received $60 million more than prostate cancer and ovarian cancer $64 million more than testicular cancer. The smaller funding for men’s health research is a paradox given their average life expectancy is just 79.7 compared to 84.2 for women. And the fact that one in two Australian men will be diagnosed with cancer by the age of 85 compared to only 1 in 3 Australian women. Prostate Cancer Foundation chief Dr Anthony Lowe says “it is unexpected for men to find themselves in this position” and he says men’s failure to seek healthcare for themselves is partly to blame. “We know men are much worse at health seeking behaviour and have worse health outcomes,” he said. NRL identity Darryl Brohman was diagnosed with prostate cancer in 2010 and is concerned about the lack of knowledge of this cancer that impacts the lives of 1 in 7 men. Men need to be more aware of health issues ... NRL and media personality Darryl Brohman believes there’s a lack... Men need to be more aware of health issues ... NRL and media personality Darryl Brohman believes there’s a lack of knowledge out there. Source: News Limited “I do think men need to be more aware,” said Mr Broman. “It is something that you would never know you had if you didn’t get checked. A simple blood test could save your life. It did for me.” Legendary broadcaster Alan Jones, who has suffered from prostate cancer and melanoma, said men were their own worst enemies when it came to generating awareness and funding for male-specific cancers. “Women tend to be braver and tougher – they have talked about their experiences and so people feel more comfortable addressing breast cancer and cervical cancer,” Mr Jones told News Corp Australia yesterday. Mr Jones said he had many prominent CEOs and political figures who had told him of their private struggles with cancer but were terrified of the news going public because “they were worried the share price of their company would go down” or “they wouldn’t be able to stand for a leadership position”. Source: http://www.news.com.au/lifestyle/health/men-die-earlier-but-womens-health-gets-four-times-more-funding/story-fneuzlbd-1226794504245 You must enter the characters with black color that stand out from the other characters Message: * A friend wanted you to see this item from WRAL.com: http://wr.al/10hx9 — Several injuries were reported Saturday afternoon when a concrete canopy structure collapsed at North Iredell High School, according to WBTV. Emergency crews responded to the school, on Raider Road in Olin, at about 2 p.m. after a large box truck ran into the canopy structure. Students were at the school for a band competition. Authorities said 25 people , including some students, were taken to local hospitals. Their names and conditions have not been released. As many as 20 children were trapped for a short time, officials said. It's unclear what caused the box truck to hit the canopy. No other information about the incident was immediately available. These actions can be done over multiple matches, you just need to do one of each action at some point in your Last Stand career for this achievement to unlock. Objective: To get credit for capturing an objective, you must be inside the zone when your team captures it. You should always get credit for your starting zone unless you race ahead to B, so this will come along with your 50 wins (realistically well before then, unless you somehow win 50 straight matches). Fortifications: Also in your starting area will be the two types of fortifications you need to activate (the Turret and Pulse Beacon), both of which will cost 250 SHD to activate. You should have enough right in the beginning to grab one. Perks: The two Perks will spawn in the same locations on the map, so after your first time playing you should be able to anticipate where to go at the 13:00 mark when they activate for claiming. These cost 2000 SHD each, so spend the beginning of the match killing NPCs to fund the upgrade. +worker=9 pack_row=247 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=a Southwest Airlines Boeing 737-7H4 passenger jet with the tail number “WN4119.” According to the data, SWA4119 was originally scheduled to depart Tulsa (TUL) at 14:10 and arrive in Las Vegas (LAS) at 15:00 but was somehow delayed for over 7-hours giving “SWA4119” a new arrival time of 22:22 (10:22 p.m.) which doesn’t make sense because the craft was headed north and was too close to the airport to be aligned with any of the runaways. You see, the aircraft that was displaying “SWA4119” between 10:21 and 10:22 p.m., which emerged on radar for the first time at 10:21, absolutely can not be a passenger jet because the actual flight data confirms that the aircraft slowed to a stop then changed its direction abruptly to a due north heading before proceeding to hover over the Delano in a very specific spot for approximately one-minute (i.e. the craft in question was, in fact, a helicopter because jets simply cannot hover or change speed and direction with such intensity.) This means that the operators of the craft were intentionally transmitting a fictitious call sign before going dark (invisible) from radar altogether. To top it off, the Oct. 1 flight data for Southwest Airlines “WN4119” is showing inconsistencies. The following screen-capture of the the aircraft’s flight history shows that “SWA4119” landed at 10:22 p.m. at (LAS) despite the fact that a transponder was pinging from the rooftop of the Delano at that exact same time. Not to mention, the tail number listed for that exact flight is “N227WN” and not “WN4119” as the transponder was emitting in real-time suggesting that the plane on the tarmac that “landed” was “N227WN” which is a different aircraft entirely. The following image shows the position of where the aircraft was when it was in a solid hover for one-minute. An aerial view of the Delano Hotel reveals the exact EXFIL site, based on FAA data. A more zoomed out view of the area. Here is a bird’s eye view. Who did the helicopter extract? We can safely say that it was an extraction because the aircraft’s transponder was turned off upon leaving the rooftop, not upon approach (i.e. it was trying to mask its exit from the scene.) Please contact shepard@intellihub.com if you have any additional information on this matter. Featured Image: Screenshot via Google Maps 2017. INTELLIHUB.COM. All Rights Reserved. Follow @ShepardAmbellas Bag of gold bars and cash worth £30k found under tree in Berlin Bag of gold bars and cash worth £30k found under tree in Berlin The bars of gold weighed a total of 1kg. Pic: Berlin Police An unsuspecting man discovered a small fortune when he found a bag of gold sitting under a tree in Berlin. The bag was filled with 22 gold bars worth about €30,000 (£26,901) and €3,500 in cash (£3,138). But the honest man did what we all like to think we would do and immediately handed the bag into a police station. The bag was left just outside a bank in the Neukoelln district, one of Berlin's poorest areas. Was in #Neukölln so alles unterm Baum liegt... Ehrlicher Finder gibt Dokumentenmappe mit 3500€ und Gold auf unserem #A55 ab.#Fundbüro tsm pic.twitter.com/L7drjlOWWC — Polizei Berlin (@polizeiberlin) July 27, 2017 The lucky owner of the goods told police he had put the bag down to lock up his bike and then simply forgot about it. Berlin police posted on Twitter: "Amazing what you can find under a tree in Neukoelln... An honest finder turned in the briefcase with 3,500 euros and gold to our station." ON THE face of things, Greece’s four big banks are in their best shape in years. In November they received their third bail-out in as many years. The extra €14.4 billion ($15.9 billion) they got then (some of it from private investors) raised their capital ratios to 18%, well above the European average of 13%. Recent legal changes make it easier for them to repossess collateral and +worker=3 pack_row=245 ntok=1024 reason=top_token_frac>=0.080(frac=0.081,count=83,token=I) text=but there are some parts of the workout, which require you to work a little harder and dig a little deeper then others. This is how I have felt about his section on social masks. My initial response was – I don’t wear any social masks. That is too simplistic of an answer. Ok, so what social masks do I wear and how do I know when I am wearing them. One of the clues he suggests is when you feel false, frustrated, or dishonest. When are we faking the funk and being what we think others want us to be and not who we really are? So my social masks are. I am still grappling with this. I think the one mask that I sometimes put on myself is the serious, scholarly, reflective, deep person mask. I don’t seem to wear this mask as much as I used to, however, I am aware of times when I feel as if others have this mask they want me to put on for them. Somebody once said to me that they loved talking to me because I always make them feel so peaceful and it must be nice to be in that state all the time. The reality is that I am and I am not. I am at peace and then at the same time there are those moments when I become aware that others do not have the same agreements I do and I have to release my frustrations. I think there are far less masks I wear today then there were. I have worked hard to evolve to a place where who I am in the classroom is who I am with my friends and who I am with strangers. My role might be different; however, I strive to be as authentically me with everyone I meet as I can at that moment. Sometimes I am more aware of when I don’t have the masks on then when I do. For example, I remember having a few people over for dinner one night several months ago. it was the first time one of the guests had ever been around me socially and he was surprised that I enjoyed having a glass of wine on occasion and that I am not always serious and can be pretty funny at times. I have been told by others that I need to stop being so positive because nobody can be as positive and joyful as I am. it is not that I do not have things which happen in my life that are sad, however, I made an agreement with myself a long time ago I would no longer let anyone or anything steal that internal joy and peace. I acknowledge what I am going through, do what I can about it, and have faith that it is all going to work out as it is supposed to work out. I think that in the past I wore these masks because I was afraid of what others would think of me. I was afraid people would not love me for I was. However, I think it was also because I was not sure I loved me for I was. So if I put this mask on then others could not get to me and see my “imperfections” and I did not have to deal with what I was calling my “imperfections.” What I came to realize was that as I took the masks off, I came to love and appreciate the uniqueness of who I am and how like everyone else, I am this work in process. I am constantly growing and evolving and even in the time I have been sitting here thinking about being masked and maskless I have changed. I am never the same person twice, I am constantly evolving. When I took the masks off, it gave me the freedom to grow and evolve. Wearing the masks was constraining and it almost reminded me of wearing a body shaper. It is not that it takes the weight off; it just redistributes it and reshapes it. That is probably why I don’t wear anything like that. I stopped wearing make up for many of the same reasons. I didn’t feel as if I needed to wear something on my face to make me look beautiful. I am beautiful just as I am. It just dawned on me that perhaps one of the ways I have taken my social masks off has been by posting my journal entries on my site. It was through my journaling that I began to get honest with myself. As I took the masks off personally, I also took them off socially and publicly because I have shared my journey, all of it, with others. I remember when I first started this I did not tell others I was writing it. I never announced my entries as I did the others. Yet it became one of the more popular areas on my website. The mask was off. It was like getting naked with someone for the first time. There is that moment of anticipation followed by a wave of relief and release. So maybe it is through sharing +worker=1 pack_row=264 ntok=1024 reason=sentence_count<2(count=1) text=UL: WHEN PAUL DEMUTH FELBEHIND ON HIS STUDENT LOANPAYMENTS DURING HARD TIMES, THECALLS FROM NAVIENT, FORMERLYART OF SALLIE MAE, STARTEDCOMING.AND THE CALLS KEPT COMING EVENAFTER DEMUTH TOLD THEM TO STOP.ACTION NEWS INVESTIGATESOBTAINED AUDIO OF SOME OF THOSCALLS.>> IS PAUL DEMUTH THERE?>> YEAH, I ALREADY SPOKE TO YOUGUYS YESTERDAY, IT'S ALREADYTAKEN CARE OF.WHY DO YOU KEEP CALLING MESTOP CALLING ME AND MY COSIGNER.PAUL: BUT JUST SIX HOURS LATER,NAVIENT CALLED AGAIN.>> HI, I WAS CALLING TO SPEAKWITH PAUL DEMUTH?>> HI, I'M HERE TO TELL YOUYOU'RE GOING TO STOP CALLING MEBECAUSE THIS IS BORDERLINEHARASSMENT.IF I DON'T HAVE THE MONEY AT9:45 IN THE MORNING, WHAT THEHECK MAKES YOU THINK AT 11:00I'M GOING TO HAVE THE MONEY?PAUL: AMY GINSBURG IS DEMUTH'ATTORNEY.>> ONCE THE CONSUMER SAYS STOPCALLING ME, THEY NEED TO STOPROBOCALLING.THEY CAN STILL MAKE MANUAL PHONEROBOCALLS.PAUL: DID THAT WORK?>> NO.WHY DO YOU KEEP BLOWING UP MYPHONE?THIS IS HARASSMENT.PAUL: SO DEMUTH FILED SUIT.AN INDEPENDENT ARBITRATOR FOUNNAVIENT MADE 200 UNAUTHORIZEDROBOCALLS TO DEMUTH DURING ATWO-YEAR PERIOTHE ARBITRATOR SAID NAVIENT MADETHE CALLS KNOWINGLY OR WILLINGAND ORDERED THE COMPANY TO PAYDEMUTH $1500 PER CALL, A TOTALOF $300,00DEMUTH OWED JUST $15,000 ON HISLOAN AND THAT MONEY WILL BEDEDUCTED FROM THE AWAR>> HERE IT'S PRETTY CLEAR INPAUL'S CASE THOSE CALLS WEREKNOWINGLY AND WILLINGLY MADEBECAUSE THE RECORDINGS WEREPRETTY CLEAR THAT HE WAS TELLINGTHEM DON'T CALL ME AND THEYCONTINUED TO CALL.PAUL: NAVIENT REFUSED OUREQUESTS FOR AN INTERVIEW OR ASTATEMENT ON THE DEMUTH CASE. ACCORDING TO COURT RECORDS,NAVIENT SAID DEMUTH NEVERREVOKED HIS CONSENT TO ALLOWROBOCALLS, AND THEREFORE, ALLCALLS PLACED TO HIS CELLULARTELEPHONE WERE APPROPRIATE.THE COMPANY IS APPEALING THEARBITRATOR'S RULING.DEMUTH IS FAR FROM THE ONLY ONEALLEGING HARASSING CALLS BNAVIENT.LAST MONTH, SIX CONSUMER GROUPSSENT THIS LETTER TO THE FCACCUSING NAVIENT OF MASSIVE ANDCONTINUOUS VIOLATIONS OF THEFEDERAL ANTI-ROBOCALLING LAW.THE LETTER SAYS, "NAVIENT HASDELIBERATELY ENGAGED IN CAMPAIGN OF HARASSING ANDABUSING CONSUMERS THROUGH THUSE OF REPEATED, UNCONSENTED-TOROBOCALLS, CALLING CONSUMERS'CELL PHONES HUNDREDS, AND INSOME CASES THOUSANDS OF TIMESAFTER BEING ASKED TO STOP.THE GROUPS WERE RESPONDING TO ANATTEMPT BY NAVIENT AND OTHERSTUDENT LOAN COMPANIES TOOVERTURN AN FCC RULE THAT ALLOWSNO MORE THAN THR +worker=14 pack_row=269 ntok=1024 reason=top_token_frac>=0.080(frac=0.089,count=91,token=) text=avoid the need for a mouse. To address these problems, the engineers at WebTV developed the MSN Companion, which was another easy-to-use thin client which used an SVGA monitor and mouse. Both Compaq and e-Machines marketed the Companion, Compaq producing it in multiple models. However, being substantially more expensive than WebTV (which at this time was typically $50 after rebate) and lacking many features that PC users and WebTV users found standard, the Companion never found a customer base. Security was always an issue with WebTV. Hackers ran through the system freely, forcing WebTV to terminate customers who were unaware their accounts had been hacked, and to change the privacy policy without letting customers know.[21] MSN TV rebranding [ edit ] MSN TV logo In July 2001, six years after WebTV's founding, Microsoft rebranded WebTV as MSN TV,[22] and the WebTV division was dissolved, although the WebTV engineers continued to work for Microsoft, many of them working on Microsoft's Xbox video game system or Microsoft IPTV technology, offering television programming over the internet. Microsoft's MSN unit took over WebTV's subscribers, and contracts with Philips and Sony were terminated, with RCA becoming terminated. Promotion of the WebTV brand ended. In later years, the number of consumers using dialup access has dropped and as the Classic and Plus clients were restricted to dialup access, their subscriber count began to drop. Because the WebTV client was subsidized hardware, the company had always required individual subscriptions for each box, but with the subsidies ended, MSN started offering free use of MSN TV boxes to their computer users who subscribed to MSN, as an incentive to not stray to discount dialup ISPs. Broadband MSN TV [ edit ] In 2001, Rogers Cable partnered with Microsoft to introduce “Rogers Interactive TV” in Canada. The service enabled Rogers' subscribers to access the Web via their TV sets, create their own websites, shop online, chat, and access e-mail. This initiative was the first broadband implementation of MSN TV. In late 2004, Microsoft introduced MSN TV2. Like the MSN Companion, the "Deuce" was capable of broadband access, and allowed the use of a mouse, but it used the television as an output device, eliminating the need for a computer desk in crowded homes. For inexpensive devices, the cost of licensing the operating system is substantial. For Microsoft, however, it would be actualizing a sunk cost, and when Microsoft released the MSNTV2 model, they adopted standard PC architecture and used Windows CE software with few changes. This allowed a standard PC to be used with relatively few changes, allowing MSNTV2 to more easily and inexpensively keep current. The new box had Adobe Reader, Windows Media Player, and could access Windows computers on a home network to function as a media player. MSNTV2 used a different online service from MSNTV but, like WebTV, still required a subscription. For those with broadband, the fee was US$99 yearly. WebTV/MSN TV client hardware [ edit ] Brand Model Type Modem RAM ROM Storage CPU speed CPU chip Latest Software Version Sony INT-W100 Classic V.34 2 MB (2 MiB) 2 MB (2 MiB) 2 MB 112 MHz R4640 2.5.9.1mpeg 2.5.9.1print Philips MAT-960 Classic V.34 2 MB 2 MB 2 MB 112 MHz R4640 2.5.9.1mpeg 2.5.9.1print Sony INT-WJ200 Classic (Japan) V.90 8 MB 4 MB 1.1 GB 150 MHz R4640 Sony INT-W150 New Classic V.90 8 MB 2 MB 2 MB 150 MHz RM5230 2.9.1 Philips MAT-965 New Classic V.90 8 MB 2 MB 2 MB 150 MHz RM5230 2.9.1 RCA RW-2100 New Classic V.90 8 MB 2 MB 2 MB 150 MHz RM5230 2.9.1 Sony INT-W200 Plus V.90 8 MB 2 MB 1.1 GB 150 MHz R4640 2.9.1 Sony INT-W200B Derby Plus V.90 8 MB 2 MB 1.1 GB 167 MHz RM5230 Philips MAT-972 Plus V.90 8 MB 2 MB 1.1 GB 150 MHz R4640 2.9.1 Samsung SIS-100 Plus V +worker=14 pack_row=270 ntok=1024 reason=top_token_frac>=0.080(frac=0.103,count=105,token=) text=.90 8 MB 2 MB 1.1 GB 150 MHz R4640 2.9.1 Mitsubishi RW-2000 Plus V.90 8 MB 2 MB 1.1 GB 150 MHz R4640 2.9.1 Mitsubishi RW-2001 Plus V.90 8 MB 2 MB 1.1 GB 150 MHz R4640 2.9.1 Sony INT-WJ300 Plus (Japan) V.90 16 MB 4 MB 1.1 GB 167 MHz RM5230 RCA RW-2110 New Plus V.90 16 MB 8 MB 2 MB 167 MHz RM5230 2.9.1 Sony INT-W250 New Plus V.90 16 MB 8 MB 2 MB 167 MHz RM5230 2.9.1 Philips MAT-976 New Plus V.90 16 MB 8 MB 2 MB 167 MHz RM5230 2.9.1 Echostar Dishplayer 7100 DISH tuner V.90 16 MB 4 MB 8.6 GB 167 MHz RM5230 Echostar Dishplayer 7200 DISH tuner V.90 16 MB 4 MB 17.6 GB 167 MHz RM5230 RCA UltimateTV DirecTV tuner V.90 16 MB 4 MB 40 GB 167 MHz RM5230 RCA RM-4100 MSNTV2 V.90 128 MB none 64 MB 733 MHz Celeron RCA RM-4100 (2) MSNTV2 V.90 256 MB none 64 MB 733 MHz Celeron MSN TV2, the latest version of MSN TV, is an Internet & Media Player that requires no software to buy or install. It includes: an internet media player, a wireless remote, a wireless keyboard, a telephone line T-splitter, a phone cord, an audio/video cable and a power supply.[23] In February 2006, Chris Wade analyzed the proprietary BIOS, and added a sophisticated memory patch which allowed it to be flashed and used to boot Linux on the MSN TV2 player.[24] Work continues on the task of replacing the proprietary BIOS in the MSN TV2 and similar devices.[25] An open-source solution to enabling TV output was made available in 2009.[26] MSN TV hardware is no longer being sold by Microsoft although service briefly continued for existing users. On the MSN TV website, a message stated, "Sorry, MSN TV hardware is no longer available for purchase from Microsoft. Microsoft continues to support the subscription service for existing WebTV and MSN TV customers."[23] As of September 30, 2013, MSN TV/WebTV service closed. Existing customers were offered MSN Dial-Up Internet Access account with a promotion. Customer service was available for non-technical and billing questions until January 15, 2014.[1] See also [ edit ] Rugby officials on P.E.I. want to get more younger kids playing the sport, in addition to the high school, university and older adult teams. Starting Tuesday, the Mudmen Rugby Club is offering rookie rugby camps to seven to 12 year-olds. Introducing rugby at an early age will provide more experienced players for the future which will help to grow the sport, said Justin Ellis of the Mudmen. "Probably the overall goal is for our sport not to be considered a fringe sport or an odd sport anymore," said Ellis. "You want to just have it be just as regular an option as soccer and hockey. You want it to be present in Montague, in Summerside and in Charlottetown and just kind of be a normal option for kids to try." Training and equipment has already been given to some elementary and junior high teachers, said Ellis, who plan to offer rookie rugby during gym classes this fall. Untitled a guest Jan 5th, 2014 78,451 Never a guest78,451Never Not a member of Pastebin yet? Sign Up , it unlocks many cool features! rawdownloadcloneembedreportprint text 1.42 KB We're closing. Ladies and gentlemen, upon careful reflection of the project's history and progress, I've made the executive decision to pull the plug. Ultimately, I feel the Anontune we released is nothing like how we envisioned the project. Our users deserve more than what we've achieved - which is an ugly, incomplete application with largely unproven ideas. For this reason we have decided to pull the plug. Proceeding forward from this point with no drastic change means only to embarrass ourselves, and we won +worker=9 pack_row=322 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=found to be more unwilling to accept asylum seekers than the older generation with approximately 62 per cent of people aged under 35 being against, while among older age groups that view is shared by 48 to 52 per cent of respondents. The survey, conducted by the Public Opinion Research Centre (CBOS), showed that 40 per cent agreed that Poland should accept asylum seekers from conflict zones – but only until they can safely return to their country of origin. In total, 92 per cent of Poles reject the permanent settlement of migrants. Only 4 per cent thought that migrants should be received and allowed to settle in Poland permanently. When it came to the EU’s controversial migrant relocation plan, which sought to redistribute migrants who had arrived from the Middle East and Africa during the migrant crisis, 67 per cent of Poles rejected accepting those migrants. These figures are in line with other Eastern European nations’ opinions of migrants and asylum. In a survey of Hungarians, 90 per cent of respondents were against illegal migration. Surveyed Hungarians were also asked about the EU’s redistribution quota, a move that has been heavily resisted by Hungary and its fellow Visegrad (V4) countries Poland, Slovakia, and the Czech Republic. Seventy-one per cent of Hungarian respondents agreed with the other V4 countries and totally reject the idea of the redistribution of migrants. Polish Prime Minister Beata Szydo rejected EU demands that her country takes 7,000 mostly Muslim migrants, saying that after the Paris attacks national security must come first. Deputy Foreign Minister Konrad Szymanski later told the media the quota plans were “dead”. Poles were more accommodating to migrants from neighbouring Ukraine, which has experienced unrest following the Euromaidan protests and the annexation of Crimea. The proportion of Poles willing to accept Ukrainian asylum seekers was 58 per cent, those opposed 37 per cent. There are an estimated 300,00 to 400,000 Ukrainians in Poland including those claiming asylum in the country. Mateusz Kramek from the Ukrainian World centre, which provides assistance to Ukrainians in Poland, said his organisation enjoys widespread support from the Polish electorate and Poles donate generously. The Guardian notes that “similarities in culture between Poland and western Ukraine in particular have generally made integration of Ukrainian migrants relatively straightforward.” Poland is also looking to welcome tens of thousands of ethnic Poles to Poland. A parliamentary committee has been working to repatriate Poles and their descendants from Kazakhstan. In 1936, Soviet authorities deported 70,000 Poles from their western territories, such as Ukraine and Belarus, to Kazakhstan. Although many died from the harsh conditions, it is thought that over 30,000 of their descendants still live in the Central Asian country. The committee was also working on changes to the “Pole’s Card”, which Radio Poland describes as “a document created in 2008 which confirms a person’s membership of the Polish nation without requiring Polish citizenship.” The card is only available to residents of former USSR countries, and it has been proposed to give holders the same rights as Polish citizens under certain specific circumstances, such as in life-threatening scenarios. Supporters of the Kazakhstan repatriation legislation consider it the nation’s “moral duty”. Pin 4 5 Shares “We get too soon old and too late smart.” Pennsylvania Dutch proverb I read a large number of online blogs and a big portion of them are into minimalism and simple living. That’s wonderful because I believe there is richness to simple living that goes far beyond having less stuff. I also think that since I’ve been embracing it more and more, my life has become happier, less stressful and far more meaningful. But something I’ve noticed is that the vast majority of blogs about minimalism are written primarily by those in their twenties to thirties. And while I’m psyched to know that young adults are embracing the lifestyle, I also believe that maturity offers a perspective that should not be overlooked. In fact, it is often those who have lived through multiple choices and experiences that have the most to offer others. That’s why I thought a few perspectives from midlife should be included in any discussion about minimalism or simple living. So what are a of few perspectives that you gain in midlife? Being content, happy and at peace with aging (no matter what your age) is a critical minimalist practice. While it is great being young, the truth is every single one of us will spend much more of our lives NOT being young, if we are able to experience the gift of a long and healthy life. If too much of your happiness and self-image is attached to +worker=14 pack_row=322 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=impact on sub-Saharan Africa's economy, Reuters reported. Speaking at a lecture in Johannesburg today, he said the cost would be closer to $3 billion to $4 billion, compared with an earlier worst-case scenario of $32 billion. He said the lower projection comes from the success some countries in the region have had at containing the disease, but warned that the economic damage could grow if the countries and the world become complacent. A public-private partnership to help train people in West Africa's outbreak region to sequence Ebola viral genomes was announced today, according to a press release from the three involved groups. They include the US Agency for International Development (USAID), the Broad Institute at Massachusetts Institute for Technology (MIT) and Harvard, and Illumina, Inc. The collaboration is intended to help with surveillance efforts and will bring state-of-the-art genome sequencing technology to help with the current outbreak response. Sequencing and patient monitoring facilities will be rolled out first in Liberia, Nigeria, Senegal, and Sierra Leone, with longer term plans to include more West African countries. India's health ministry announced yesterday that it has quarantined a man who tested negative for the virus after he recovered from an Ebola infection in Liberia, because traces of the virus were found in his semen, the Times of India reported yesterday. The man arrived at the New Delhi airport on Nov 10. The UNMEER report said India will keep the man in quarantine until the virus is no longer present, though he had documents from Liberia confirming that he had recovered from his infection and was no longer a health threat. The CDC said Ebola can stay in semen after recovery and that men should abstain from sex for 3 months, though sexual transmission of Ebola has never been reported. See also: Nov 19 WHO situation update Nov 18 MMWR report Nov 19 AP story Nov 19 Reuters story on Sierra Leone doctor Nov 19 UNMEER report Nov 18 Gates Foundation press release Nov 19 Reuters story on World Bank projection Nov 19 genome sequencing press release Nov 18 Times of India story Copyright by WNCN - All rights reserved Google maps image of Candlewood Court in High Point. Copyright by WNCN - All rights reserved Google maps image of Candlewood Court in High Point. HIGH POINT, N.C. (WFMY) -- The High Point Department said a man was shot and killed after he broke into a house Sunday morning. Officers responded to a home invasion in the 1700 block of Candlewood Court just after 3 a.m. Sunday. Police say three men broke into the house and exchanged gunfire with a man who was inside. One of the intruders died at the scene. Police identified him as 21-year-old Christopher Lamont Gidderon. Police haven't said who shot Gidderon. The investigation is in its very early stages and no charges have been filed at this point. 2017 WFMY-TV With objects all around us getting smarter, and more covetable for it, it makes sense that fashion should follow suit. Enter LOOMIA, the New York startup designing fabric-based technology for highly functional, scalable, wearable products. Founder Madison Maxey grew the company out of her studio The Crated, after her early projects with connected textiles caught the attention of companies like The North Face, Google and Levi’s. PSFK sat down with Maxey, CEO Janett Liriano and Director of Product Development Ezgi Ucar at New Lab in the Brooklyn Navy Yard, where the company is based. The cavernous coworking space hosts a number of creative companies with a bevy of tables and couches for flexible seating, a lofted second floor and an in-house cafe, but the real draw for entrepreneurial groups like LOOMIA is access to shared equipment—3D printers, laser cutters, a metal shop and more—that can be used for prototyping. Maxey, Ucar and Liriano, along with VP of Supply Chain and Operations Marco Pal, constitute the small team integrating technology into comfortable fabrics, which are intended for use by brands in performance products (just as materials like Gore-Tex are). Even if the notion of connected textiles leaves you utterly confounded, a short time spent with the minds behind LOOMIA will convince you to trust them on it. “Our goal is to make technologies that add comfort, safety and confidence to the human experience. Comfort can be done through things like heating, safety can be done through things like lighting for high visibility, confidence can +worker=4 pack_row=289 ntok=1024 reason=top_token_frac>=0.080(frac=0.090,count=92,token=) text=Hello, world!" ); That will draw the text in the top-left corner in white on black, the default colors. So what if you want a different position or color? This is where Malison gets interesting. Position, bounding box, foreground color, and background color are specified using indexers. Like this: terminal [ 2 , 5 ][ TermColors . Green ]. Write ( "Hello again!" ); That will write another line of text two rows down and five columns to the right from the top-left corner, and in bright green. These indexers can be freely combined and support a couple of different overloads. Here's some more examples: terminal [ TermColors . Red , TermColors . DarkBlue ]. Write ( "Red on blue, at the top-left corner." ); terminal [- 1 , - 1 ]. Write ( "Negative coordinates are from the bottom-right corner." ); There are a few other things you can draw aside from text: terminal . Clear (); // clears the entire terminal terminal [ 2 , 3 , 4 , 5 ]. Clear (); // clears just a 4x5 rectangle two columns and three rows from the corner terminal [ 0 , - 4 ]. Fill ( TermColors . Green ); // fills the bottom four rows with green terminal [ 2 , 3 , 4 , 5 ]. DrawBox (); // draws a box outline terminal [ 2 , 8 , 4 , 5 ]. DrawBox ( DrawBoxOptions . DoubleLines ); // draws a box double-outline What? How Do the Indexers Work? I Don't Get It. I'll admit it's a little strange. Here's the underlying Philosophy of Malison (tm). A terminal has two kinds of state associated with it: character data and the cursor. Character data is the state you think about: it's the grid of letters and their colors. When you write to a terminal, you're changing character data. The cursor is the ephemeral state a terminal uses to decorate what you mean when you tell it to draw something. When you say Write("Hi!") , the terminal's cursor dictates where and what color to use to write that. Seems pretty simple. Here's where it gets kooky. A terminal's cursor never changes. While the character data for a terminal is mutable (i.e. it can change), cursor data is immutable. There is no MoveCursor() method in Malison. Instead there are the indexers. Every time you call an indexer, like terminal[TermColors.Blue] you're creating a new terminal that shares character data with the old one, but has its own cursor. When you then write to that new terminal, you write to the same character data, but with a different cursor (blue, in this case). This lets you do neat stuff like this: // setting the color each time is lame, let's reuse it ITerminal tinted = terminal [ TermColors . Black , TermColors . Orange ]; tinted . Write ( "This will be orange." ); tinted [ 0 , 1 ]. Write ( "This too!" ); // and we can also make windows ITerminal window = terminal [ 4 , 7 , 20 , 10 ][ TermColors . Blue ]; window [ 0 , 0 ]. Write ( "I'm a window!" ); window [ 0 , 1 ]. Write ( "But I look just like my own terminal." ); The second little example there is the real reason Malison works this way. Most UI systems are built out of a tree of controls. Each control has a rectangular boundary that it draws in, and some number of child controls that fit inside that boundary. To draw the UI, you traverse the tree, calculate the local bounding box for each control and let it draw itself into that window. Malison supports that windowing concept implicitly. By making the terminal cursors immutable, we also avoid a common class of bugs. If rendering code can change the terminal state, then different pieces of rendering code can accidentally interfere with each other. Lets say we have two pieces of text to draw. The first one wants to be blue, so its sets the cursor to blue and then draws. +worker=3 pack_row=316 ntok=1024 reason=too_many_urls(count=3,max=2) text=, Noncompliant (aka DJ Shiva), Oscar Mulero, Phoenecia, Richard Devine, and tehn (of monome fame) are just a few reminders of just how many wonderful artists have been on this label over the years, from beautiful gems from obscure artists to obscure gems from famous artists. Add to that the more recent DU series of fine Eurorack gear, and you have basically a nerd singularity. Naturally, this app will continue to fill with news and videos as DU keeps on goin’. So even a few minutes on the Web app should convince you to check out the label if you haven’t already listened to me prattle on about them. The label’s Bandcamp: https://detund.bandcamp.com/ And access the app from a browser, desktop software, any OS, smart TVs, Android and iOS: http://detroitunderground.net/download-du-vhs/ British police on Thursday said they would arrest Julian Assange, the founder and editor-in-chief of Wikileaks, an organization known for its whistle blowing efforts. "The warrant is still in place. If he leaves the embassy we will make every effort to arrest him," said a spokesman for the British police. Their statement came shortly before an announcement from the Swedish Foreign Ministry, which said that a UN panel reviewing the case had decided that Assange had been illegally detained. Assange had previously announced the UN Working Group on Arbitrary Detention would decide on whether he has been in arbitrary detention after he took refuge in the Ecuadorian embassy in June 2012. The UN group is expected to formally announce its decision on Friday. "Should the UN announce tomorrow I have lost my case against the United Kingdom and Sweden I shall exit the embassy at noon on Friday to accept arrest by British police as there is no meaningful prospect of further appeal," Assange said in a statement on Thursday. "However, should I prevail and the state parties be found to have acted unlawfully, I expect the immediate return of my passport and the termination of further attempts to arrest me," the Wikileaks founder added. Meanwhile, the UN group "has ruled in his favor," reported the BBC, without citing sources. The Wikileaks Twitter account said that it was aware of the report and was waiting for confirmation from the UN group. According to Assange's lawyer in Sweden, Per Samuelson, the Swedish prosecutor Marianne Ny would have to repeal the arrest warrant if the UN decides in favor of his complaint, filed in 2014. "My view is that he is illegally detained, and that the decision will be positive for Assange," Samuelson told DPA news agency. Watch video 01:07 'Tomorrow will be the end of the story', Assange's lawyer says 'Scoop' The UK government responded to the report, saying that they would adhere to the arrest warrant despite the UN's decision. "We have been consistently clear that Mr. Assange has never been arbitrarily detained by the UK but is, in fact, voluntarily avoiding lawful arrest by choosing to remain in the Ecuadorian embassy," a government spokeswoman said in a statement. "An allegation of rape is still outstanding and a European Arrest Warrant in place, so the UK continues to have a legal obligation to extradite Mr. Assange to Sweden," the spokeswoman added. Meanwhile, Wikileaks criticized the UK for using the BBC, a state-run broadcaster, to "scoop" the UN and Assange. "Note what happened today. UN [and] Assange press conferences tomorrow. UK already has verdict but not JA, public. So UK used BBC to 'scoop' UN, JA," Wikileaks' tweeted, referring to Assange by his initials. Assange is wanted for questioning by Swedish prosecutors in connection to allegations of rape in 2010. He has maintained that the interaction was purely consensual. The 44-year-old Australian fears that if he is taken to Sweden, he could be extradited to the US, where he is wanted for publishing sensitive documents exposing Washington's military, intelligence and diplomatic practices. Watch video 04:14 Share Risks for digital whistleblowers Send Facebook google+ Whatsapp Tumblr linkedin stumble Digg reddit Newsvine Permalink https://p.dw.com/p/1Hn9z Risks for digital whistleblo +worker=6 pack_row=362 ntok=1024 reason=too_many_urls(count=3,max=2) text=undergoing rewrites -- especially, it would figure, to the last act. Based on the 2003 book, "Devil's Knot: The True Story of the West Memphis Three," by Mara Leveritt, it will be a small budget flick directed by Atom Egoyan. The documentary, "Paradise Lost 3: Purgatory," by docu-filmmakers Joe Berlinger and Bruce Sinofsky, is the third in an Emmy Award-winning series of films that became advocacy works on behalf of the three men. Already cut, it will debut as-is at the Toronto International Film Festival before getting re-edited for the new twist in the case. According to The Hollywood Reporter, it will receive a short theatrical run, to qualify it for the Academy Awards, before airing on HBO. It’s easy to ramble on for a couple hundred pages (or blog posts) about how amazing German filmmaker Werner Herzog is, and that’s before you even get to discussing any of his finished films. The man has forced actors to work at gunpoint, ate a shoe Charlie Chaplin-style when he lost a bet, was shot while giving an interview*, and even hypnotized Joaquin Phoenix into surviving a car crash. *By the way, remember a second ago when I said he was shot while giving an interview? Well–and this part is important, so pay attention–he didn’t stop giving the interview. Not while being shot at. Not after having been shot. Not while having a doctor remove the bullet from his body and patch up the wound. Herzog promised the reporter an interview and that was all there was to it. “Okay, Rick,” I can hear you thinking. “We already know that Herzog is secretly an emissary of the Time Lords, his quirky ways the natural result of understanding and processing the world on a level not yet matched by any human thought. That’s old hat. But what does he think of professional wrestling?” And I am oh so glad you asked, because, as part of an interview promoting a film that has absolutely nothing to do with professional wrestling, Herzog recently took a few moments to discuss his opinions of professional wrestling. Check out the video after the jump. [gigya src=”http://www.traileraddict.com/emd/26290′′ width=”450′′ height=”305′′ allowScriptAccess=”always” quality=”high” wmode=”transparent” allowFullScreen=”true” ] Frankly, if Herzog was thrown into a steel cage match with Bret ‘Hitman’ Hart, my money just might be on Herzog. Is there a GMO-chemtrail connection? by Jon Rappoport May 21, 2014 www.nomorefakenews.com In a groundbreaking article at farmwars.info, Barbara Peterson makes a stunning connection between GMO food crops and chemtrails. (“Monsanto Patents and Chemtrails”) Peterson has looked into a Monsanto patent that expands the genetic engineering of food crops. Engineering for what purpose? Overcoming the destructive presence of heavy metals like aluminum and barium in the soil. These are metals which have often been reported in globally sprayed chemtrails. So is Monsanto going to offer yet another version of low-nutrient fake frankenfood, as an answer to chemtrails? And if so, was this the plan all along? As Peterson reports, the Monsanto patent is titled, “Stress tolerant plants and methods thereof.” It has two identifying numbers. The patent application is 11/961962, and the patent number is 7851676. The publication date is 12/14/10. Here are quotes from relevant sections: “Described herein are inventions in the field of plant molecular biology and plant genetic engineering...The transgenic [engineered] plants are characterized by improved stress tolerance.” “Improvement of abiotic stress tolerance in plants would be an agronomic advantage to growers allowing enhanced growth and/or germination in cold, drought, flood, heat, UV stress, ozone increases, acid rain, pollution, salt stress, heavy metals, mineralized soils, and other abiotic stresses.” The new GMO food-plants are specifically designed to be resistant to heavy metals, which happen to be present in chemtrails. And as well, the plants are clearly envisioned for +worker=5 pack_row=359 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=from responding to what she called “trash talk” in her small community. “For two years, I sat quietly â I let people spread lies about me. I sat home, since I now do not like to leave my house really ever,” she says. “It was very frustrating to know that everyone had the right to say my name, when I couldn’t.” MacKay says prosecutors and judges often assume that a publication ban is in the best interest of a victim of sexual assault, sometimes without his or her knowledge or consultation. “One of the many negative impacts from being a victim of sexual assault is losing a certain amount of your humanity,” MacKay says. “(Publication bans) do take out the human element to some extent.” Adults should have more say in the decision to impose a publication ban, says MacKay. He says for some, speaking out about their experience is a way of “reclaiming their own life.” Graham says that’s her goal: to reclaim her name so she can tell her story her way. She wants victims of sexualized violence to know how the criminal justice system works, because she says if she had, she would have sought the help she needed rather than getting the authorities involved. “Everybody copes with things in different ways,” she says. “Whether it’s talking to somebody, whatever method that’s needed, that’s what I would have done, versus going through this for who knows how long. “Maybe it’ll make people look at how the justice system is set up, but I know one person doesn’t have the power to change all that. But it might be able to help somebody else.” President of Roosevelt University, Chuck Middleton Chuck Middleton is the first openly gay man to become a college president in the United States. A classic servant leader he started as a professor then executive back to teaching for 6 years and 30+ years an executive. In this interview, you’ll learn how he advanced his executive career and the advantages of being gay in running a university. Follow @Rooseveltu Listen to the interview and read the notes below Listen to other episodes Quote of the Day “You must do the thing you think you cannot do.” – Eleanor Roosevelt 3 Lessons from Interview How being gay can be asset in running a company What Chuck learned from getting NOT picked for President at another university The key reason Chuck was able to develop 6 current college presidents from his staff Featured Books The Team of Rivals [easyazon_image add_to_cart=”default” align=”center” asin=”0743270754′′ cloaking=”default” height=”160′′ localization=”default” locale=”US” nofollow=”default” new_window=”default” src=”http://ecx.images-amazon.com/images/I/51maKR-GGyL._SL160_.jpg” tag=”purposerockst-20′′ width=”106′′] How Abraham Lincoln assembled a successful presidential cabinet of people from different parties and viewpoints. Tip and the Gipper [easyazon_image add_to_cart=”default” align=”center” asin=”1451696000′′ cloaking=”default” height=”160′′ localization=”default” locale=”US” nofollow=”default” new_window=”default” src=”http://ecx.images-amazon.com/images/I/51QKqDNh4JL._SL160_.jpg” tag=”purposerockst-20′′ width=”105′′] The story of how conservative US president Ronald Reagan worked successfully with liberal US Speaker of the House Tip O’Neil. Getting to Know Chuck Middleton What is a Helpful Habit? Quit when he begins to feel tired. He holds off, rests, and gets back to the task later. What is a Helpful Resource for You? Google and read widely from different perspectives Who is a Helpful Person that Helped You on Your Journey? His partner of 33 years John. A reality check whenever Chuck has flights of fancy What is Your Purpose on this Planet? Take my talents and skills to benefit other people – first and foremost. free 30 minute one on one career coaching session just for you. In the session, I will help you create a career plan to make more progress in the next 3 months than this past year. Tired of waking up, going to work, +worker=10 pack_row=438 ntok=1024 reason=sentence_count<2(count=0) text=of such tractable yes-men In effort to contol wild passions for violent jihad, White House urges gun owners to keep their firearms covered in gun burkas TV horror live: A Charlie Brown Christmas gets shot up on air by Mohammed cartoons Democrats vow to burn the country down over Ted Cruz statement, 'The overwhelming majority of violent criminals are Democrats' Russia's trend to sign bombs dropped on ISIS with "This is for Paris" found response in Obama administration's trend to sign American bombs with "Return to sender" University researchers of cultural appropriation quit upon discovery that their research is appropriation from a culture that created universities Archeologists discover remains of what Barack Obama has described as unprecedented, un-American, and not-who-we-are immigration screening process in Ellis Island Mizzou protests lead to declaring entire state a "safe space," changing Missouri motto to "The don't show me state" Green energy fact: if we put all green energy subsidies together in one-dollar bills and burn them, we could generate more electricity than has been produced by subsidized green energy State officials improve chances of healthcare payouts by replacing ObamaCare with state lottery NASA's new mission to search for racism, sexism, and economic inequality in deep space suffers from race, gender, and class power struggles over multibillion-dollar budget College progress enforcement squads issue schematic humor charts so students know if a joke may be spontaneously laughed at or if regulations require other action ISIS opens suicide hotline for US teens depressed by climate change and other progressive doomsday scenarios Virginia county to close schools after teacher asks students to write 'death to America' in Arabic 'Wear hijab to school day' ends with spontaneous female circumcision and stoning of a classmate during lunch break ISIS releases new, even more barbaric video in an effort to regain mantle from Planned Parenthood Impressed by Fox News stellar rating during GOP debates, CNN to use same formula on Democrat candidates asking tough, pointed questions about Republicans Shocking new book explores pros and cons of socialism, discovers they are same people Pope outraged by Planned Parenthood's "unfettered capitalism," demands equal redistribution of baby parts to each according to his need John Kerry accepts Iran's "Golden Taquiyya" award, requests jalapenos on the side Citizens of Pluto protest US government's surveillance of their planetoid and its moons with New Horizons space drone John Kerry proposes 3-day waiting period for all terrorist nations trying to acquire nuclear weapons Chicago Police trying to identify flag that caused nine murders and 53 injuries in the city this past weekend Cuba opens to affordable medical tourism for Americans who can't afford Obamacare deductibles State-funded research proves existence of Quantum Aggression Particles (Heterons) in Large Hadron Collider Student job opportunities: make big bucks this summer as Hillary’s Ordinary-American; all expenses paid, travel, free acting lessons Experts debate whether Iranian negotiators broke John Kerry's leg or he did it himself to get out of negotiations Junior Varsity takes Ramadi, advances to quarterfinals US media to GOP pool of candidates: 'Knowing what we know now, would you have had anything to do with the founding of the United States?' NY Mayor to hold peace talks with rats, apologize for previous Mayor's cowboy diplomacy China launches cube-shaped space object with a message to aliens: "The inhabitants of Earth will steal your intellectual property, copy it, manufacture it in sweatshops with slave labor, and sell it back to you at ridiculously low prices" Progressive scientists: Truth is a variable deduced by subtracting 'what is' from 'what ought to be' Experts agree: Hillary Clinton best candidate to lessen percentage of Americans in top 1% America's attempts at peace talks with the White House continue to be met with lies, stalling tactics, and bad faith Starbucks new policy to talk race with customers prompts new hashtag #DontHoldUpTheLine Hillary: DELETE is the new RESET Charlie Hebdo receives Islamophobe 2015 award; the cartoonists could not be reached for comment due to their inexplicable, illogical deaths Russia sends 'reset' button back to Hillary: 'You need it now more than we do' Barack Obama finds out from CNN that Hillary Clinton spent four years being his Secretary of State President Obama honors Leonard Nimoy by taking selfie in front of Starship Enterprise Police: If Obama had +worker=10 pack_row=442 ntok=1024 reason=sentence_count<2(count=1) text=to China as security for US debt obligations Jay Carney: Al Qaeda is on the run, they're just running forward President issues executive orders banning cliffs, ceilings, obstructions, statistics, and other notions that prevent us from moving forwards and upward Fearing the worst, Obama Administration outlaws the fan to prevent it from being hit by certain objects World ends; S&P soars Riddle of universe solved; answer not understood Meek inherit Earth, can't afford estate taxes Greece abandons Euro; accountants find Greece has no Euros anyway Wheel finally reinvented; axles to be gradually reinvented in 3rd quarter of 2013 Bigfoot found in Ohio, mysteriously not voting for Obama As Santa's workshop files for bankruptcy, Fed offers bailout in exchange for control of 'naughty and nice' list Freak flying pig accident causes bacon to fly off shelves Obama: green economy likely to transform America into a leading third world country of the new millennium Report: President Obama to visit the United States in the near future Obama promises to create thousands more economically neutral jobs Modernizing Islam: New York imam proposes to canonize Saul Alinsky as religion's latter day prophet Imam Rauf's peaceful solution: 'Move Ground Zero a few blocks away from the mosque and no one gets hurt' Study: Obama's threat to burn tax money in Washington 'recruitment bonanza' for Tea Parties Study: no Social Security reform will be needed if gov't raises retirement age to at least 814 years Obama attends church service, worships self Obama proposes national 'Win The Future' lottery; proceeds of new WTF Powerball to finance more gov't spending Historical revisionists: "Hey, you never know" Vice President Biden: criticizing Egypt is un-pharaoh Israelis to Egyptian rioters: "don't damage the pyramids, we will not rebuild" Lake Superior renamed Lake Inferior in spirit of tolerance and inclusiveness Al Gore: It's a shame that a family can be torn apart by something as simple as a pack of polar bears Michael Moore: As long as there is anyone with money to shake down, this country is not broke Obama's teleprompters unionize, demand collective bargaining rights Obama calls new taxes 'spending reductions in tax code.' Elsewhere rapists tout 'consent reductions in sexual intercourse' Obama's teleprompter unhappy with White House Twitter: "Too few words" Obama's Regulation Reduction committee finds US Constitution to be expensive outdated framework inefficiently regulating federal gov't Taking a page from the Reagan years, Obama announces new era of Perestroika and Glasnost Responding to Oslo shootings, Obama declares Christianity "Religion of Peace," praises "moderate Christians," promises to send one into space Republicans block Obama's $420 billion program to give American families free charms that ward off economic bad luck White House to impose Chimney tax on Santa Claus Obama decrees the economy is not soaring as much as previously decreeed Conservative think tank introduces children to capitalism with pop-up picture book "The Road to Smurfdom" Al Gore proposes to combat Global Warming by extracting silver linings from clouds in Earth's atmosphere Obama refutes charges of him being unresponsive to people's suffering: "When you pray to God, do you always hear a response?" Obama regrets the US government didn't provide his mother with free contraceptives when she was in college Fluke to Congress: drill, baby, drill! Planned Parenthood introduces Frequent Flucker reward card: 'Come again soon!' Obama to tornado victims: 'We inherited this weather from the previous administration' Obama congratulates Putin on Chicago-style election outcome People's Cube gives itself Hero of Socialist Labor medal in recognition of continued expert advice provided to the Obama Administration helping to shape its foreign and domestic policies Hamas: Israeli air defense unfair to 99% of our missiles, "only 1% allowed to reach Israel" Democrat strategist: without government supervision, women would have never evolved into humans Voters Without Borders oppose Texas new voter ID law Enraged by accusation that they are doing Obama's bidding, media leaders demand instructions from White House on how to respond Obama blames previous Olympics for failure to win at this Olympics Official: China plans to land on Moon or at least on cheap knockoff thereof Koran-Contra: Obama secretly arms Syrian rebels Poll: +worker=13 pack_row=429 ntok=1024 reason=punct_run>7(count=9,text=.........) text=, Boxer engine comes to life. Nothing earth shattering but it revs freely right off of idle. To the “mod hungry” group of enthusiast you instantly imagine a light weight flywheel and firmer clutch ...except.......the clutch feels VERY good. The motor revs very fast and is responsive. The motor does NOT have the boxer rumble but does sound aggressive. There is no “reaching” for the shifter as it’s easily within reach and pushing the lever into first gear proves to be a very short commute from neutral. This is the first real hint of what you have “gotten yourself into”. As I pull out of the parking space the first thing I notice is I am NOT turning the steering wheel like a mass transit bus driver. Instead my left hand drops from the 9 o clock position to the 6 o clock position and I am reminded of an 05 STI with a Quik Rack ! The 13:1 rack is electronic and the steering feel is medium weight. Imagine Miata meets Lotus Elise, meets Porsche 911! My initial curiosity was to press the gas pedal to the floor to see how the 200hp, high revving motor feels, but I resisted. First I started turning the steering wheel to see how responsive it is. ITS RESPONSIVE ! Its amazing what happens when you remove front axles and a differential. Immediately you notice the absence of body roll. Your brain says..” how can this be?”. Then the advertised lower CG than a Ferrari 458 comes to mind and you look for the closest exit ramp. Turn in is cerebral like. NO REALLY.....its unlike ANY Subaru I have ever driven. That includes the GC8 STI Type RA with factory goodies etc. Mind you my wife and I met at a Subaru dealer and we have owned 13 Subaru’s since 2000. The list includes 04 STI, 06 Legacy Spec-B, 2001 2.5Rs, 2011 WRX and many more. NONE were left stock and ALL had extensive suspension and brake work. ALL were tracked at some point in time. I only say this to validate my opinion of the STOCK steering in the BRZ. Simply put: Subaru hit this out of the park! The steering is this car means you can put this car EXACTLY where you want it. The stock Michelin Primacy’s will fool you. These tires have a VERY stiff sidewall and in typical Michelin fashion, are surprisingly supportive for a 215/45-17. Some will do the crazy wheel and tires sizes and some will go for “less equals more”. The factory knew this and have rolled the fenders for you. With the wheels off you quickly realize you will be able to fit a 10inch wide wheel in the back. But remember at 200hp and 2700lbs anything above a 245 probably will never get warm enough for good traction! This platform is efficient. Everything the factory did was to save weight and make the best use of the power to weight ratio. Borrowing from the multi link rear suspension of the previous and current generation Impreza and WRX platforms the rear suspension I am told has various pillow ball mounts for a more “positive handling car”. 14mm rear sway bar, reverse front WRX control arms, no pitch stop mount and motor mounts that are seemingly WRX like.......make up the short list of distinctive differences this car has underneath. No front eccentric bolts means stock class auto-crossers have their work cut out for them. But that’s just it....this car STOCK on a twisty road will RUN AWAY from a stage 2 STi. How you might ask? 2749 lbs with full tank, 2714 lbs with spare tire removed and 2650 lbs with 1/8 of a tank means this car weighs 150lbs less than a 2000 Impreza 2.5 RS, has 35 more horsepower ,no front axles to push, and does this thing called.........TURN !!! The BRZ turns like the best of them. I have driven a lot of cars over the years and by default instructed a lot of students (which means you have to take them for 3 laps in their car before you turn it over to them) in all of the latest and greatest. This car will dominate at autocrossing. Track day drivers will love it because unlike the AWD platform of the WRX and STI this car has CRISP turn in, allows you to get on the gas BEFORE the apex and tracks out with an amazing amount of confidence. AGAIN......all from a stock car. Less weight means less to stop. The brake pedal is +worker=8 pack_row=502 ntok=1024 reason=top_token_frac>=0.080(frac=0.081,count=83,token=,) text=, including if caused by negligence, including the negligence, if any, of releasees. "Releasees" include USA Hockey, Inc.,its affiliate associations, local associations, member teams, event hosts, other participants, coaches, officials, sponsors, advertisers, and each of them, their officers, directors, agents and employees.For and in consideration of the undersigned participant's registration with USA Hockey, Inc., its affiliates, local associations and member teams (all referred to together as USAH) and being allowed to participate in USAH events and member team activities,participant(and the parent(s) or legal guardian(s) of participant, if applicable) waive, release and relinquish any and all claims for liability and cause(s) of action, including for personal injury, property damage or wrongful death occurring to participant, arising out of participation in USAH events, member team activities, the sport of ice hockey, and/or activities incidental thereto, whenever or however they occur and for such period said activities may continue, and by this agreement any such claims, rights, and causes of action that participant (and participant's parent(s) or legal guardian(s), if applicable) may have are hereby waived, released and relinquished, and participant (and parent(s)/guardian(s), if applicable) does(do) so on behalf of my/our and participant's heirs, executors, administrators and assigns.Participant (and participant's parent(s)/guardian(s), if applicable) acknowledge, understand and assume all risks relating to ice hockey and any member team activities, and understand that ice hockey and member team activities involve risks to participant's person including bodily injury, partial or total disability, paralysis and death, and damages which may arise therefrom and that I/we have full knowledge of said risks. These risks and dangers may be caused by the negligence of the participant or the negligence of others, including the "releasees" identified above. These risks and dangers include, but are not limited to, those arising from participating with bigger, faster and stronger participants, and these risks and dangers will increase if participant participates in ice hockey and member team activities in an age group above that which participant would normally participate in. I/We further acknowledge that there may be risks and dangers not known to us or not reasonably foreseeable at this time. Participant (and participant's parent(s)/guardian(s), if applicable) acknowledge, understand and agree that all of the risks and dangers described throughout this agreement, including those caused by the negligence of participant and/or others, are included within the waiver, release and relinquishment described in the preceding paragraph. I/We agree to abide by and be bound under the rules of USA Hockey, including the By-Laws of the corporation and the arbitration clause provisions, as currently published. Copies are available to USA Hockey members upon written request. Participant (and participant's parent(s)/guardian(s), if applicable) acknowledge, understand and assume the risks, if any, arising from the conditions and use of ice hockey rinks and related premises and acknowledge and understand that included within the scope of this waiver and release is any cause of action (including any cause of action based on negligence) arising from the performance, or failure to perform, maintenance, inspection, supervision or control of said areas and for the failure to warn of dangerous conditions existing at said rinks, for negligent selection of certain releasees, or negligent supervision or instruction by releasees.As further consideration for registration and participation in USAH events and member team activities, participant (and the parent(s) or legal guardian(s) of participant, if applicable), hereby (1) consents and agrees that USAH, its licensees and designees may make video and/or audio recordings of and/or otherwise film, photograph or memorialize some or all of participant's participation in such events and activities, and (2) grants to USAH, its licensees, designees, successors and assigns, a worldwide, perpetual, irrevocable, fully-paid, royalty-free, transferable and sublicenseable right and license to use, copy and disseminate participant's image and personal attributes, and to modify and present same in any form, manner and media, now known or hereafter devised, for any purpose whatsoever.If the law in any controlling jurisdiction renders any part of this agreement unenforceable, the remainder of this agreement shall nevertheless remain enforceable to the full extent +worker=3 pack_row=481 ntok=1024 reason=top_token_frac>=0.080(frac=0.083,count=85,token=+) text=injuries. This is nothing new for the franchise: It has reliably duped the various statistical forecasting systems for years now. Here’s how Baltimore’s actual records have compared with what some of the most popular projection systems called for (including FanGraphs’s depth charts and Baseball Prospectus’s PECOTA , plus the Vegas over/unders for good measure) since 2012, when the Orioles won 93 games after being projected for only 72: PROJECTED WINS SEASON PECOTA FANGRAPHS VEGAS AVERAGE ACTUAL WINS DIFFERENCE 2017 17 19 19 18 23 +5 2016 73 78 80 77 89 +12 2015 78 84 85 82 81 -1 2014 78 84 78 80 96 +16 2013 75 79 78 77 85 +8 2012 75 70 71 72 93 +21 The O’s keep beating the odds Sources: Baseball Prospectus, FanGraphs, LAS VEGAS REVIEW-JOURNAL, CBS Sports On average, the projections have missed low on Baltimore by 10 wins a year since 2012, including 2017 so far. And not to single out PECOTA specifically, but it has been low on the Orioles so often — 2017 is tracking to be the sixth-consecutive season where this happened — that it has become something of a running joke among Baltimore fans. Even granting that predicting baseball teams is an imperfect science at best, there’s something else going on here — and it has a lot to do with manager Buck Showalter, one of the best in modern history at squeezing every spare win out of a roster. This isn’t the first time Showalter’s teams have shattered expectations; in addition to his work in Baltimore, he also won plenty of ballgames during his previous stints in Texas, Arizona and New York when the numbers said he had no business doing so. With the Orioles, though, Showalter has turned defying the odds into an art form. Three years ago, I wrote that — for better and for worse — few managers really make much of a dent in a team’s record, relative to what we’d expect from a simple, manager-independent projection of talent. But Showalter is one of the select few who’ve risen above the fray. From 2010 (when Showalter took over the Baltimore job midseason) to 2016, the O’s won an average of nearly six extra games per season over expectation, which elevated Showalter into eighth place among overachieving managers since the expansion era began in 1961: WINS ABOVE PROJECTED PER SEASON MANAGER GAMES DUE TO PLAYER PERFORMANCE DUE TO STRATEGY AND LUCK TOTAL WAP OVERALL 1 Bobby Cox 4,505 +4.0 +2.0 +6.0 +166.5 2 Tony LaRussa 5,093 +0.6 +2.0 +2.6 +82.0 3 Dick Williams 3,022 +2.7 +1.5 +4.3 +79.4 4 Earl Weaver 2,540 +4.0 +0.7 +4.7 +74.0 5 Davey Johnson 2,443 +2.8 +1.8 +4.6 +69.2 6 Dusty Baker* 3,337 +2.4 +1.0 +3.3 +68.9 7 Billy Martin 2,266 +4.4 +0.5 +4.9 +68.7 8 Buck Showalter* 2,744 +2.7 +0.8 +3.5 +58.9 9 Walter Alston 2,574 +2.8 +0.7 +3.6 +56.5 10 Ralph Houk 3,150 +1.2 +1.5 +2.7 +52.7 11 Felipe Alou 2,054 +0.4 +3.6 +4.0 +50.6 12 Mike Scioscia* 2,754 +1.5 +1.4 +2.9 +49.0 13 Whitey Herzog 2,406 +1.9 +1.3 +3.2 +47.2 14 Clint Hurdle* 2,130 +0.9 +2.6 +3.5 +46.4 15 Jack McKeon 2,041 +2.0 +1.5 +3.6 +45.1 16 Sparky Anderson 4,028 +0.4 +1.4 +1.8 +43.5 17 Hank Bauer 1,138 +3.4 +2.1 +5.5 +38.8 18 Joe Torre 4,323 +0.3 +1.1 +1.4 +36.7 19 Art Howe 2,266 +0.7 +1.9 +2.6 +36.1 20 Fred Hutchinson 587 +5.7 +3.7 +9.4 +34.1 Which managers consistently overachieve? (1961-2016) Total wins above projected based on comparison of manager’s record with projected wins above replacement (WAR) for players and projected wins for team. Wins from “strategy and luck” +worker=15 pack_row=488 ntok=1024 reason=top_token_frac>=0.080(frac=0.086,count=88,token=.) text=2007. Bi Academic Intervention, eds. The Bisexual Imaginary. Continuum, 1997. Bryant, Wayne M. Bisexual Characters in Film: From Anais to Zee. Routledge, 1997. Burleson, William E. Bi America: Myths, Truths, and Struggles of an Invisible Community. Routledge, 2005. Chamberlain, Brent. Bisexual People in the Workplace: Practical advice for employers. Stonewall Workplace Guides. Forging a Bi-Trans Alliance. Spec. issue of Anything That Moves 17 (1998). Retrieved Tue 9 Oct 2012. http://web.archive.org/web/20021020035411/anythingthatmoves.com/ish17/index17.html. Garber, Marjorie. Vice Versa: Bisexuality and the Eroticism of Everyday Life. Simon & Schuster, 1995. Hemmings, Clare. Bisexual Spaces. Routledge, 2002. THIS IS THE BIBLE! READ THIS! Hutchins, Loraine and Lani Ka’ahumanu, eds. Bi Any Other Name: Bisexual People Speak Out. Alyson Books, 1991. Kinsey, et al. Sexual Behavior in the Human Male. Indiana University Press, 1948/1998. Ochs, Robyn and Sarah Rowley, eds. Getting Bi: Voices of Bisexuals Around the World. 1S ed. Boston: Bisexual Resource Center, 2005. Ochs, Robyn and Sarah Rowley, eds. Getting Bi: Voices of Bisexuals Around the World. 2Nd ed. Boston: Bisexual Resource Center, 2009. Pramaggiore, Maria and Donald E. Hall, eds. RePresenting Bisexualities: Subjects and Cultures of Fluid Desire. NYU Press, 1996. Reba-Weise, Elizabeth, ed. Closer to Home: Women and Bisexuality. Seal Press: 1992. San Francisco Human Rights Commission LGBT Advisory Committee. (2011). Bisexual Invisibility: Impacts and Recommendations. San Francisco, California. Storr, Merl, ed. Bisexuality: A Critical Reader. Routledge, 1999. Download a free copy here. Download a free copy here. Suresha, Ron Jackson and Pete Chvany. Bi Men: Coming Out Every Which Way. Routledge, 2005. The Open University Centre for Citizenship, Identities and Governance and Faculty of Health and Social Care. (2012). The Bisexuality Report: Bisexual inclusion in LGBT equality and diversity. London, U.K.: Meg Barker, Christina Richards, Rebecca Jones, Helen Bowes-Catton & Tracey Plowman with Jen Yockney and Marcus Morgan. Tucker, Naomi, ed. Bisexual Politics: Theories, Queries and Visions. Routledge, 1995. Articles and book chapters Ault, Amber. “Ambiguous Identity in an Unambiguous Sex/Gender Structure: The Case of Bisexual Women.” The Sociological Quarterly, 37:3 (1996): 449-463. Ault, Amber. “Hegemonic Discourse in an Oppositional Community: Lesbian Feminists and Bisexuality”. Critical Sociology, 20 (1994): 107-122. Cixous, Hélène. “The Laugh of the Medusa.” Trans. Keith Cohen and Paula Cohen. Signs, 1:4 (1976): 875-893. Diamond, Lisa. “Female Bisexuality From Adolescence to Adulthood: Results From a 10-Year Longitudinal Study”. Developmental Psychology 44.1 (2008): 5-14. Eadie, Joe. “Activating Bisexuality: Towards a Bi/Sexual Politics.” Activating Theory: Lesbian, Gay, Bisexual Politics. Joseph Bristow and Anglia R. Wilson, eds. Lawrence & Wishart Ltd., 1994. 139-165. Eisner, Shiri. “Love, Rage and the Occupation: Bisexual Politics in Israel/Palestine.” Journal of Bisexuality 12:1 (2012): 80-137. Farrimond, Katherine. “‘Stay Still So We Can See Who You Are’: Anxiety and Bisexual Activity in the Contemporary Femme Fatale Film.” Journal of Bisexuality 12:1 (2012): 138-154. Fox, Ron C +worker=2 pack_row=492 ntok=1024 reason=punct_run>7(count=57,text=.........................................................) text=time which the inoculated mycelium grows into a thread-like network in the log is called the spawn run. For shiitake, this is about a year. During this time logs should be stacked loosely to allow for this initial mycelium colonization. Appropriate log orientation depends on your ability to protect the logs from wind and sun and will vary depending on your climate zone, wind levels, and average rainfall. Shiitakes produce optimally when they are kept at 35-45 percent moisture content. Log ends should be kept off the ground or on weed barrier fabric to prevent colonization by soil-borne strains of fungi. Fruiting the Crop In nature, the timing of mushroom production is dependent on temperature and rain levels. For shiitakes inoculated with sawdust, this is usually the fall after they were inoculated. You can “force” your logs to fruit by submerging them in cool water for about 20 hours and then stacking them in an upright position to increase the space for mushroom formation. This practice will also cause your log to recover faster by stimulating both wood decay and fruiting. Beware of pests: Mice will occasionally chew on mushroom caps, though they rarely cause much harm. When grown close to the ground, slugs and snails can damage shiitake caps during prolonged humid weather. Harvesting Your Mushrooms When productive, mushrooms develop over a several day period. Shiitakes should be harvested when their caps are 70 to 90 percent open. Because mushroom development is much faster in warm weather, nearly mature mushroom caps can expand beyond prime conditions overnight on hot nights. Twist and pull the stem off the log to harvest it. Never cut the mushroom stem because it will shorten the shelf-life of the mushroom by causing it to dry out. Store your fresh mushrooms in well-ventilated containers like paper bags or cardboard cartons. Allow your logs to rest for 10-12 weeks after it has produced a crop of mushrooms to allow the mycelium time to replenish itself and regain the energy needed for fruiting. When properly cared for, shiitake logs could fruit for 2 to 8 years. ......................................................... Starting our mini mushroom farm has been a lot of fun so far! I hope this post inspires you to start your own experiments in the wonderful world of mycology. This post contains Affiliate links. A purchase from you helps to support this blog. Lukas Podolski ending his career in Asia (but not Chinese Super League) Lukas Podolski’s hammer of a left foot has earned him 129 caps for Germany and a stellar club career. He’s won the World Cup, Bundesliga and six domestic honours across Germany, Arsenal and Turkey. But time is catching up with the 31-year-old Galatasaray forward, and now he’s reportedly set for one final big move to Asia. While most players his age are opting to seek the riches of the Chinese Super League, Podolski is moving to J. League side Vissel Kobe. The German will join Vissel in the summer for a fee of around £2million, according to beIN SPORTS. Podolski’s arrival would be a massive coup for a side who haven’t finished higher than seventh in the J. League since the entering the top flight in 1997. READ MORE: Despite only playing 13 times in the league for Galatasaray this season Podolski has still showed flashes of class, such as the five goals he netted in a Turkish Cup clash against 24 Erzincanspor. He’d be the most high profile arrival since Michael Laudrup left Real Madrid for Vissel in 1996, spending just one season in Japan before ending his career with Ajax, Vissel’s squad is almost entirely comprised of domestic players, aside from three Brazilians and South Korean goalkeeper Kim Seung-gyu. So Podolski will have little option but to throw himself head first into the culture. His initiation song will be a doddle though, given he’s already gone number one in the German charts. WATCH: Lionel Messi tearing it up on Japanese TV Previous research has mainly focused on the economic issues that can affect ART usage, such as a country’s wealth and health insurance costs. But, in new research published in Human Reproduction, scientists from the Oxford University Department of Sociology and Nuffield College, have for the first time assessed the relative importance of the role that economic, demographic and cultural normative factors play in the process +worker=14 pack_row=532 ntok=1024 reason=top_token_frac>=0.080(frac=0.092,count=94,token=.) text=The cosmopolitan canopy : race and civility in everyday life. NY: W.W. Norton & Co. Davies, S., & Tanner, J. (2003). The long arm of the law: Effects of labeling on employment . Sociological Quarterly 44(3), 385-404. Edwards, K. L. (2013). Prison Work: Transforming Identity and Reducing Recidivism. In M. S. Crow, & J. O. Smykla, Offender Reentry Rethinking Criminology and Criminal Justice (pp. 51-74). Burlington : Jones & Bartlett Learning. Holzer, H. J., Raphael, S., & Stoll, M. (2007). The effect of an applicant's criminal history on employer hiring decisions and screening practices: Evidence from Los Angeles. In S. Bushway, M. Stoll, & D. F. Weiman, Barriers to reentry? The labor market for released prisoners in post-industrial America (pp. 117-150). NY: Russell Sage Foundation. Pettit, B., & Lyons, C. (2007). Status and the stigma of incarceration: The labor market effects of incarceration, by race, class, and criminal involvement . In S. Bushway, M. Stoll, & D. F. Weiman, Barriers to reentry? The labor market for released prisoners in post-industrial America (pp. 203-226). NY: Russell Sage Foundation . Reisig, M. D., Bales, W. D., Hay, C., & Wang, X. (2007). The Effect of Racial Inequalty on Black Male Recidivism. Justice Quarterly 24(3), 408-434. Tonry, M. (2010). Punishing race: A continuing American dilemma. New York City: Oxford University Press. Travis, J. (2005). But they all come back : facing the challenges of prisoner reentry. Washington, D.C: Urban Institute Press. Uggen, C., Manza, J., & Thompson, M. (2006). Citizenship, democracy, and the civic reintegration of criminal offenders. Annals of the American Academy of Political and Social Science 605, 281-310. Useem, B., & Piehl, A. (2008). Prison state: The challenge of mass incarceration . NY: Cambridge University Press. Wang, X., Mears, D. P., & Bales, W. D. (2010). Race-Specific Employment Contexts and Recidivism. Criminology 48(4), 1171-1211. Wilson, W. J. (1996). When work disappears: The world of the new urban poor. NY: Vintage Books. WASHINGTON — The number of young adults who end up in the emergency room after taking Adderall, Ritalin or other such stimulants has quadrupled in recent years, federal health officials said Thursday, fresh evidence of the unexpected consequences that can result from the wide use of medicines for conditions like attention deficit disorder. The number of emergency room visits related to stimulants among people ages 18 to 34 increased to 23,000 in 2011, from 5,600 in 2005, according to national data from the Substance Abuse and Mental Health Services Administration, a branch of the Department of Health and Human Services. Peter J. Delany, the director of the office that oversees statistics for the administration, said the rise was particularly pronounced among 18- to 25-year-olds. He said it was part of a broader pattern of negative health effects from prescription drug abuse across American society. Scientists have not firmly established the reasons for the rise, but Dr. Delany said one clue was the way that people who misused prescription drugs obtained them: in 2011, more than half got them at no charge from a friend or a relative, and 17 percent bought them from a friend or a relative. That suggests that a large share of the misuse is of medicines not prescribed by the abuser’s doctor. “We have a huge issue of easy access,” said Dr. Elinore F. McCance-Katz, the chief medical officer of the substance abuse administration, adding that it applies to stimulants as well as to opioids, another category of widely abused prescription drugs. BEREA, Ohio - Alex Mack stood in the same spot inside the Browns locker room Wednesday as he did two years ago while addressing the media. The answers to the questions were almost identical. The center expressed gratitude to teammates for +worker=6 pack_row=536 ntok=1024 reason=punct_run>7(count=15,text=...............) text=day in many forms, and still humanity is not entirely convinced. Time is running out is often heard, lets take action etc. etc. etc. Some of my thoughts in these are Why did we ever stopped with sailing our goods over the oceans, using free and sustainable wind, and stopped a development which was already that far ahead, that it still can be, and is used today. If we watch the Volvo Ocean race, we can see the possibility’s, but why still use this for fun only in most cases? Why did we stop using wind for a lot of small propulsion needs like we did successfully in the middle ages? Of course the answer will be; industrial progress.. But was it really?............... If CO2 is causing this much trouble, how to use the same gas, to build a solution against Global Warming? Heating or cooling a building is done for years by adding heat, burning some kind of fuel, and cooling, by a refrigeration system taking out the heat of a building and throw it in the direct environment of the building (roof mostly). Creating and using energy, to throw away energy, is seen to be the “smart solution of the “intelligent” species called humanity. Most animals does far better than we do I can ensure you. They use insulation in most cases, and also the natural sources wind, and sun. A heat-pump is Actually a refrigeration system, working the other way around. That simple, nothing more and nothing less. How it works its all in the name! Heat-pump It is designed to transfer heat from one place to the other, not to create heat. To take away the heat out of a product, and move it to the other. (Air or water are the most common products to “take out”, or “pump to” the heat). In order to transport the heat, we have to place it in a something which is able to take up heat, and deliver it too. This something is the refrigerant, and is pumped around by the compressor of a heat-pump in a closed system. The amount of heat which is able to be transported by heat pump, depends on the amount of heat which can be put in to the refrigerant. And here is one the biggest benefits for using CO2 as refrigerant! It is able to contain, and transport a lot of heat in every gram. Test in practice showed it is the most efficient refrigerant (next to water, which can’t be used in practice because it will freeze below 0oC/32°F) Also it is a natural gas, which is non flammable or aggressive, and even used as bubbles in drinks, and of course as a fire extinguisher . CO2 therefore is the best refrigerant to use of all known, and was already, in the past refrigeration/heat-pump history sinds 1896! But of course “smart” humanity thought it could do better than nature again! The CFC’s and HCFC’s were developed, with devastating results for our ozon layer! The Use of R744 (Co2 Refrigerant) in Practice There is already a lot of refrigerant installations build, with CO2 as refrigerant, and build to reuse the heat as much as possible. However most heat pump and airco systems suppliers do not, and are still holding on to technique with CFC’s which is in order to be phased out, even knowing that all the technique for using natural refrigerants, is available at the moment of publishing this article. Thermopunt Katwijk however is, although certificated to work with all refrigerants, using CO2 as main refrigerant, and was the first to install such a Heat-pump system in the Netherlands in a private estates home. This was in April 2015, and now a year further it proved to be a system which is able to maintain comfort in a well insulated home also in winter, without any use of extra heat sources (Combined or so called hybrid systems) and is able to provide al heat and domestic hot water with a temperature of 65oC even when it is freezing outside. Also a benefit of CO2 comparing with other refrigerants, there is a bigger temperature difference possible between low and high temperature, than most of the other refrigerants. And less refrigerant needed, does mean a smaller system. Well, look at the picture’s of the system replacing a gas-heater in the Netherlands, all placed in a small corner of the attic. Also see : http +worker=4 pack_row=501 ntok=1024 reason=sentence_count<2(count=1) text=r Brite Site Brownell Browning Brunton BSC Buck Baits Buck Bomb Buck Country Buck Fever Buck Knives Buck Wear Buckeye Cam Bug Blocker Bulldog Cases BUP Sports Burt Coyote Bushnell Butler Creek Butlers Pantry C' Mere Deer C-Bee C-EZ Cajun Caldwell Cambow Camo Candles Camo FX Camouflex CamX Can Cooker Carbomask Carbon Express CarbonPro CargoBuckle Carolina Archery Products Cartel Carter Cass Creek Cavens CBE Centerpoint Chama Chair Cheerful Giver Cheez It Cherokee Cir-Cut Cirrus Clean Shot Clean-Shot Clif Club Red CMere Cobra Code Blue Code Red Cody Coffey Cold Steel ColdPruf Coleman Combos Competition Archery Products Competition Electronics Compound String ConQuest Convergent Copper John Copper Ridge Core4 Element Cottonwood Outdoors Counter Assault Covert Covert Accessories Coyote Light CR CR Archery Cranford Crooked Horn Crooked Horn Outfitters Crosman Crossbow Crossbow Defuser Croxton Cuddeback Custom Printed Rugs CVA CW Erickson Cyclops D O Collaborative Daisy Damascus Danner Darex Daves David Day 6 Outdoors Dead Center Dead Down Wind Dead Ringer Decals with Disctinction Decals With Distinction Deer Camp Deer Quest Delta Delta McKenzie Deni Diamond Dirt Nap Gear DLC Covert Docs Deer Scent Dog Bone Doinker Donlon Double Take Double Take Archery DownSafe Doyles Deer Gear Draves Drury Drury Marketing Dry Guy DryFire DryGuy Duel Duke Duracell Duracell Display DuraMesh Eastman Eastman Outdoors Easton Easy Eye Easy-Eye Edge Eklind Elder Elder Hosiery Elevation Elite Archery Empire Empire Pewter Enforcer Zone EP Hunting Escalade EVO-X Evolved Habitats Excalibur Extreme Extreme Archery Products Extreme Dimension Extreme Dimensions Extreme Outdoor Falcon Falcon Prod Feather Flex Feather Vision Field Logic Fieldline FieldTorq Knives Fierce Fierce Hunting Fin-Finder Fine Art Creations Fire N The Hole Firefly Firenock First String Fish'N Towel Fish-A-Way Flambeau Fleetwood Fletcher Flex Fletch Flextone Flying Arrow Fog Free Foodsaver Fool Moon Press Foster Mfg. Fourth Arrow Frogg toggs G S M G5 G5 Outdoors Game Hide Game Plan Gear Game Vector Gamehide GamePlan Gear Gamo Garmin GAS Bowstrings Gateway Gator Gripp Genesis Gerber Ghost Blind Gibbs GlenDel Glenrock Goat Tuff Gold Tip Gorilla Gorilla Gear Grabber Grayling Great American Products Grim Reaper Grizzly Coolers GSM Gut Check GWS Half in the Bag Halo Hamskea Hard Nosed Hardy Harmon Hartcraft Havalon Havalon Knives Havercamp Hawk Treestands Hawke Haydel Game Calls HCO HCO Outdoor Products Heads Up Decoys Heart Away Heartland Heartland Wildlife Institute Heat Factory Heated Hunts Heavy Hauler HECS Hedog Archery Hero Dog Toys HHA Hi-Tek Hickory Creek High Demand High Five High Point Hind Sight HME Hogg Hold Up Hold Up Displays Holosun Hooyman Hoppes Horn Hunter Horton Hot Shot Hot Shot Manufacturing Hoyt HTM Huk Hunga Munga Hunt Comfort Hunten Outdoors Hunter Dan Hunter Safety System Hunter Safety Systems Hunter Safety Systems Accessories Hunters Specialties Hunting Hurricane Icebreaker icuCAM Ignitor Ihunt IHunt Media Illusion Systems Impact Impact Archery Sights Import Merchandisers Inferno Infitec Innerloc Innovative Outdoors InSight Hunting Instinct Archery Invisible Hunter IQ IQ Sights J and D Custom Strings Jacob Ash James Greene James Valley Jim Fletcher Jo Jan Johnny Stewart Just for Bucks Just for Does Kamik Kant Pinch Karnage Keebler Kettle Chips Kill Box Gear Kill'n Stix Killer Instinct Kinex Systems King Kinsey's Kinseys Kirschner Kirschners Kishels Kitchendao Knight And Hale Kodiak Kolpin Ktech KuduPoint Kutmaster Kwikee Kwiver LaCrosse +worker=15 pack_row=562 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=SEALs, the FBI and probably the NSA, CIA, DARPA, and the BPRD all bundled together into a single agency. Under normal circumstances, each branch has its own discrete hierarchy, but agents get shared around all the time. Dabbler consults with Arc-LIGHT when she’s not tinkering with the Arc-SPARQ guys. Of course the SPARQs appreciate anyone with super strength helping them carry around engine blocks, or even whole vehicles. Zephan, who is the head of Arc-LIGHT is there at the Council meeting, I just haven’t drawn him since basically the first page. Presumably he’s in the back consulting with Gault or rallying other LIGHTs, and gave his blessing seconding Pixel to Maxima for now. Check out Wearing the Cape: Team-Ups & Crossovers. Sydney’s first Crossover! I’ve made a dedicated blog post for it, please comment there. Double res version will be posted over at Patreon. $1 and up, but feel free to contribute as much as you like :) Here’s the link to the new comments highlighter for chrome, and the GitHub link which you can use to install on FireFox via Greasemonkey. This article is over 2 years old Last year saw highest costs from natural disasters since 2012, according to data from reinsurer Munich Re Last year saw the highest costs from natural disasters since 2012, with two earthquakes in Japan in April accounting for the heaviest losses, a leading insurer has said. Climate change threatens ability of insurers to manage risk Read more Losses from natural disasters worldwide totalled $175bn (£142bn) last year, some $50bn of which was covered by insurance, Munich Re said in an annual survey on Wednesday. The earthquakes on Japan’s southern Kyushu island caused $31bn worth of damage, with $6bn of the costs covered by insurance. Floods in China in June and July caused $20bn in costs, only $300m of which was insured. The third-costliest disaster was Hurricane Matthew, which hit the Caribbean and the eastern US in October. It incurred losses totalling $10.2bn, of which $3.8bn was covered by insurance. In 2015, when the El Nio weather phenomenon reduced hurricane activity in the North Atlantic, global natural disaster losses totalled $103bn, $32bn of that sum insured. However, the number of people killed dropped to 8,700 last year from 25,400 the previous year. Michael Bloomberg and Mark Carney: How to make a profit from defeating climate change Read more Last year’s losses were “in the mid-range” after three years of relatively low costs, Munich Re board member Torsten Jeworrek said in a statement. He stressed that “losses in a single year are obviously random and cannot be seen as a trend”. The company said there was an “exceptional” number of floods, which accounted for 34% of overall losses, compared with an average of 21% over the past decade. Those included $6bn in losses, about half of them insured, resulting from storms and flooding in Europe – particularly in Germany and the Paris region – in May and June. Jeworrek said that “the high percentage of uninsured losses, especially in emerging markets and developing countries, remains a concern”. Q: I am currently preparing for my first BJJ tournament. However I had wrestled for 6 years so I do not fear the adrenaline of nervousness. What I am worried about is developing what everyone calls a ‘gameplan’ for matches. What things are there to consider in preparation (5 weeks out)? Should I focus on tightening my weaknesses or capitalizing things I already have a firm grasp on? Thanks lot in advance for your time!! A: Wrestlers switching to BJJ come with a lot valuable skills and traits built in. The trick is learning how to adapt these talents to the rules and realities of submission grappling. Without seeing you train, I’ll give you general advice that I’d give to any wrestler. First off, don’t be a jerk by entering the beginners/novice division. Unless you face other sandbagging wrestlers and white belts on the verge of blue belt, you will be smashing soft beginners and casual grapplers. Some tournaments explicitly state that wrestling experience counts when determining which division to enter. Your coach can advise you on the right division to compete in. With six years of wrestling under your singlet, we’ll assume you +worker=15 pack_row=585 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=fine with the offense. “When it hit me, I was like that is a lot of money,” said Cruz. When she called the city, a clerk told her someone reported her for not having a food permit to sell the tamales. “I don’t understand because if anything I would have rather them come to me first if they had any concerns,” said Cruz. Carrollton Environmental Services said it takes food borne illnesses very seriously. A director said a fine was issued and not a warning because tamales are considered “potentially hazardous food” due to the cooked corn and meat being used. “What if somebody got sick from them? What if somebody could have died from them? And I completely understand those concerns,” said Cruz. But she feels the city’s actions are a little extreme. “I’ve seen so many people doing it. And unfortunately it’s me who’s having to deal with it,” said Cruz. “I’d just rather stay away from that at the moment, making tamales.” Cruz said the fine would be $617, but because she wants to fight it in court it is $700. A friend set up a GoFundMe account to help pay for the legal costs Cruz currently faces. (2016 CBS Local Media, a division of CBS Radio Inc. All Rights Reserved. This material may not be published, broadcast, rewritten, or redistributed) About the Project The Robot Museum is an idea I've had up my sleeve for a while now. Ever since playing Mega Man 7 years back and reaching the mid-game robot museum stage, I thought the concept of a robot museum was a great one. It wasn't until I played Mega Man & Bass that the thought of an arrangement album in the style of a robot museum had occured to me. The following is the idea that has come into fruition. I've arranged a robot master's theme from the original Mega Man all the way through Mega Man 8 with the addition of a bonus track from Mega Man & Bass. Thanks for checking out the project and I really hope you enjoy it! Joshua Morse boardroom Sensing the bull in ‘business diversity’ The business world was shaped by men of means for men of means - and it's time for women to start sculpting, writes Anna Connell In James M. Barrie’s Peter Pan, a fairy falls down dead every time a child says "I don't believe in fairies." As I throw yet another log on the fire that’s burning about Fearless Girl and Charging Bull, the two statues literally and figuratively facing off against each on Wall Street and in columns around the globe, I’m hoping there’s a reverse version of this where a woman finds herself in a position to make real change every time someone writes another thinkpiece on the subject. If every word was equivalent to a woman gaining a place on an executive team or board of directors we’d have gender equality at those levels already. But we don’t. Not by a long shot. I nearly didn't write this. Just as I was rising to get back to writing it, Liam Dann’s piece on the matter dropped for the Herald on Sunday. I cursed his name (sorry Liam) and wondered if my thoughts would contribute anything new to an already crowded discourse. But I am from Hamilton, the home of Bob Jones’ gift to the city, The Farming Family, and Molly Macalister’s Little Bull, and therefore it’s my duty to explore controversy surrounding bovine-themed public art. I am also a woman who’s feeling increasingly uncomfortable about “corporate feminism” and the entrenchment of the “business case for diversity” in conversations about gender equality at work. What was once about civil rights is now about productivity and profit. Fearless Girl was commissioned by investment firm State Street Global Advisors as an advertisement for a fund which comprises companies with a higher percentage of women among their senior leadership. It is placed in front of the bull, staring at the bull with hands on hips. The plaque at its foot reads: “know the power of women in leadership. SHE makes a difference”. “SHE" rather cleverly reads as both the fund's NASDAQ ticker symbol and the feminine pronoun. A very shrewd friend of mine described it as “well-executed content marketing.” Which it is, in the guise of public art and, like many such works, it has been adopted by the public, gaining new context through their interactions with it, becoming an emblem +worker=4 pack_row=567 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=given the dismal snow conditions on Vancouver hills in recent seasons, and the fact that skimo requires very little snow, the fringe activity could prove to be a form of diversification for resorts. Says Stoddart: “It’s time we knock on their door again, because maybe their staunch resistance will soften a little.” Advertisements Bernie Mac is in two places at once. the film Bad Santa and the third season of his sitcom both debut this week. IN BAD SANTA, YOU PLAY A STORE DETECTIVE WHO TAKES HIMSELF VERY SERIOUSLY. Too seriously. My family are police officers, detectives. My brother Mitch is FBI. Mitch is like that, a stern enforcer. YOU GET MANICURES. ARE YOU A METROSEXUAL? I've never heard that word before. IT'S A FASTIDIOUSLY GROOMED STRAIGHT GUY. Oh, yeah, I get facials. I get a manicure and pedicure every week. I get my hair cut, and I oil myself down from head to toe. I got that from my brother. I was so impressed with how high maintenance he was. When he left the room, you could still smell him for an hour. TO HONE YOUR CRAFT, DID YOU MAKE FACES IN THE BATHROOM MIRROR? I used to watch Don Rickles, Richard Pryor, Red Skelton, Carol Burnett people whose expressions are so real. I have so much respect for what's funny. YOU TAKE COMEDY PRETTY SERIOUSLY. I always want to top myself. I want to get good. You just don't know how much I want to get good. I want the audience to leave the theater and say, "He did good." Witch Hunt Update: FBI Lists 200+ Manafort Transactions from 2006 to 2014 in Indictment – ONE YEAR Before Trump Launched Campaign Paul Manafort and associate Rick Gates Former Trump Campaign manager of three months Paul Manafort was charged today in the Robert Mueller witch hunt of the Donald Trump campaign. Rick Gates, his longtime business associate, was also charged according to news reports. Manafort was Donald Trump’s campaign manager for three months in 2016. Manafort turned himself in today. PHOTOS OF MANAFORT LEAVING HOME— Former Trump campaign manager Paul Manafort hides behind his car visor as he leaves his home in Alexandria this morning Jonathan Ernst pic.twitter.com/lZDrTrpNrg — Reuters Pictures (@reuterspictures) October 30, 2017 Manafort was charged with TAX FRAUD from transactions made before 2015! The news of Manafort’s arrest was once again leaked to the liberal media this morning. Here’s video of Manafort arriving at FBI office to surrender to deep state operatives. Ex-Trump campaign manager Paul Manafort walks into FBI office; surrendering to feds in connection to Russia probe https://t.co/B2d9RX5PsV pic.twitter.com/piMhgnKNOY — ABC News (@ABC) October 30, 2017 As Josh reported moments ago there were 12 charges filed against Paul Manafort and his associate Rick Gates. Here is a copy of the indictment against Paul Manafort and Rick Gates: Via John Cardillo: Paul Manafort and Rick Gates Charges Filed in DC Court by Jim Hoft on Scribd The 200+ transactions listed in the indictment on pages 7 through 14 – with the exception of 4 transactions from 2014. All of the transactions listed are from the years 2006 to 2013. This was years before President Donald Trump announced his intentions to run for President. This is ALL a witch hunt. Anonymous hackers are posting photos and details of who they claim to be, Jazrawi Daesh – @Jazrawi_Daesh. Jazrawi, principally a Twitter personality who has acted as a propagandist for the terrorist organization, know as Daesh [ISIS/ISIL]. He first came to light after the terrorist attack in San Bernardino, California, where Jazrawi declared via Twitter, the “martyrdom” of the terrorists. Jazrawi then posted via Twitter, that the terrorist attack was a “planned attack involving assault rifles and explosives.” His rants and +worker=10 pack_row=631 ntok=1024 reason=top_token_frac>=0.080(frac=0.087,count=89,token=) text=a minor league shortstop in July, but he held a more decisive advantage in terms of speed (12 steals to one). Tatis, a true power-speed threat, even out-walked the notoriously patient Crawford, 19 to 16. AB R H 2B 3B HR RBI BB SO SB CS AVG OBP SLG RAA 95 22 28 5 5 6 17 19 24 12 3 .295 .412 .642 12.7 OF D.J. Peters • Dodgers High Class A Rancho Cucamonga (California) The 21-year-old, 6-foot-6 Peters has been a Three True Outcomes superstar in the California League, ranking first or second in home runs, walks and strikeouts. The Dodgers skipped Peters, thanks to his plus raw power, from Rookie-level Ogden last year to Rancho Cucamonga this season. AB R H 2B 3B HR RBI BB SO SB CS AVG OBP SLG RAA 108 22 36 7 1 9 20 13 34 0 0 .333 .419 .667 12.7 OF Jhailyn Ortiz • Phillies Short-season Williamsport (New York-Penn) The Phillies signed Ortiz, who had the most power in the 2015 international class, for $4 million out of the Dominican Republic. He faces questions about his athleticism and hitting rhythm, but so far Ortiz has done nothing but hit in the New York-Penn League. AB R H 2B 3B HR RBI BB SO SB CS AVG OBP SLG RAA 80 12 27 8 1 5 19 9 22 2 0 .338 .432 .650 11.8 OF Jose Siri • Reds Low Class A Dayton (Midwest) Siri set a Midwest League record when he recently notched a hit in his 36th straight game, punctuating a season in which he ranks among the league leaders for home runs, stolen bases, hits and slugging percentage. The fifth-year pro already is 22, but his tools have translated to results this year. AB R H 2B 3B HR RBI BB SO SB CS AVG OBP SLG RAA 125 22 43 6 3 10 21 4 30 6 2 .344 .362 .680 12.7 RHP Jon Duplantier • Diamondbacks High Class A Visalia (California) Duplantier's breakthrough season rolled on in July, even after a promotion to the California League. Using a strong three-pitch mix, he ranks among the minor league leaders in ERA, opponent average and WHIP. W L ERA GS IP H R ER HR SO BB SO/9 BB/9 AVG RAA 4 0 1.82 4 24.2 22 5 5 2 28 6 10.2 2.2 .250 8.5 RHP Wilmer Font • Dodgers Triple-A Oklahoma City (Pacific Coast) Though he's already 27, has washed out of three organizations and has pitched in an independent league, Font is enjoying a remarkable season in the Pacific Coast League thanks to improved command of his offspeed pitches. He leads the league in ERA and strikeouts. W L ERA GS IP H R ER HR SO BB SO/9 BB/9 AVG RAA 2 0 1.17 4 23 16 3 3 1 33 4 12.9 1.6 .190 10.6 RHP Jordan Hicks • Cardinals High Class A Palm Beach (Florida State) The Houston prep and 2015 draft pick got off to a shaky start at low Class A Peoria but found his footing with a July promotion to the Florida State League. With an excellent fastball and breaking ball, Hicks needs only improved command to reach his potential. W L ERA GS IP H R ER HR SO BB SO/9 BB/9 AVG RAA 1 1 1.08 5 25 16 3 3 0 30 5 10.8 1.8 .184 9.6 LHP Alex Wells • Orioles Low Class A Delmarva (South Atlantic) Incredibly, the 20-year-old Australian southpaw didn't allow a walk or a run in July, propelling him to the front of the line in the South Atlantic League ERA race. Wells doesn't have big stuff, but so far as a pro he has recorded a 2.24 ERA. W L ERA GS IP H R ER HR SO BB SO/9 BB/9 A +worker=15 pack_row=611 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=he was dragged away.” Jonathan has since remarried, but he is no longer the man he was – and he fears for the psychological impact on Simon too. He says: “Every time I see a child his age it affects me. The ­psychological impact of losing him is immense. "I was in Starbucks one day when a woman held up her 18-month boy and called him Simon. I said, ‘I once had a child like that.’ It brought back such painful memories.” “What also makes me angry is what’s been done to him. I’ve spoken to a psychologist who says it would be ­unbelievable if his personality was not adversely affected by this later in life.” Jonathan adds: “I miss him every day. And I go through life wondering how this happened. I never dreamt anyone could do the things she’s done. “She lives in a moral vacuum. She didn’t care about hurting anyone including me or her own son. "It has challenged my view of humanity – but I still hope he will find me one day so we can have a relationship. I can’t stop loving him.” The names of those involved have been changed for legal reasons. The Lion, the Switch and the Cuckoo - Adultery In A Test Tube by Jonathan Grindon, priced £2.99 is published on Kindle. Jonathan would like to hear from other men who identify with his story at jonathan.grindon101@gmail.com Roboceratops is a 14 degree of freedom animatronic triceratops. It has a custom joystick and a carrying case that looks like it was made by Adam Savage. Everything after this is Robert in his own words. This is Roboceratops, my Robot Dinosaur. Inspired by a childhood love of dinosaurs, I wanted to try and make a member of the ceratopsian group. And to attempt to give the feel and personality of a juvenile dinosaur. I have been working on this project for almost a year, as and when time and money allowed. It is still a work in progress, with a few kinks to iron out. Here’s what I have so far. Code I have implemented full Forward and Inverse Kinematics, which runs at around 60 cycles/sec. Its movements are limited by the 2 Degree of Freedom front legs. These limit the body translations to X (forward/back) and Z (height). It also means that the point of rotation for yaw is located between the front legs. I am attempting to code the locomotion, however it does feel like trying to teach a toddler to walk as it does like to tumble over. The limitation of the front leg also effects the locomotion, it is unable to strafe, and it also has a point of locomotive rotation located between the front legs, which essentially makes the robot rear steer. Mechanics The Robot currently has 14 Degrees of Freedom using the following: Jaw – 1x 9g Servo Neck – 2x Hitec HS 55 Tail – 1x Hitec HS 645 MG Front Legs – 2x Hitec HS 645 MG ea Rear Legs – 3x Hitec HS 645 MG ea *Probably needs HS 5645 MG’s or better The head and body are made from laser cut MDF, 3 and 6mm respectively. The legs are made from aluminium square bar, and are covered with upholstery foam to add volume to the limbs. Robot Electronics 2x Pololu Mini Maestro 12-Channel Servo Controllers. Could be replaced with a single 18-Channel Version. Currently these are the only electronics on the robot. They are receiving servo position commands over serial cable from the controller as well as power from an external power supply. Controller Electronics 1x Arduino Mega 2560 1x 12864 Graphical LCD 2x 3-axis Analogue Joystick Future I intend to add more to the robot, things to do include: An on-board micro-controller – giving the option for autonomous behaviours, Battery – Removing the need to be tethered for power. Wireless Communication – either Zigbee or Bluetooth. IMU – to add extra dynamic stability with a PID feedback loop. Pressure/Contact detection in the feet – for dynamic locomotion. Wireless Communication – either Zigbee or Bluetooth. SD Card – store different programs and record and playback behaviours/routine +worker=13 pack_row=701 ntok=1024 reason=top_token_frac>=0.080(frac=0.085,count=87,token=) text=, knickknacks and even tote bags. Andrea Jones, the National Audubon Society’s California director of bird conservation, suggested people admire owls because “they’re part of a lot of lore and history.” Plus, she added, “Humans love things with big eyes.” Unfortunately, the big-eyed barred owl is also a big bully. The owl spread from the East, likely as trees were planted in the Midwest and people increasingly suppressed forest fires. Upon arrival, barred owls become real estate moguls and chase other birds from their territory. These bullied birds may fall mute to avoid detection, fail to call out to potential mates and plummet in number. Northern spotted owl populations, for example, have fallen in some areas by about 12 percent each year, despite efforts enacted in the 1990s to protect their old-growth forest habitat. “Can you imagine letting something like that go extinct?” Diller asked. “It’s really not acceptable.” Northern spotted owls also have winning personalities. They’re curious and tend to come closer than many other species when human researchers offer mice. The males carry the mice back to nests to feed their mates. And the owls can remember individual people. “They very quickly learn that you’re the source of the mouse,” Diller said. “So they’ll kind of get attached to you.” Once barred owls swooped in, northern spotted owls seemed to disappear, but this evidence was circumstantial. To be sure barred owls were causing the decline, someone needed to create a controlled experiment. Timberlands with northern spotted owls have to submit habitat conservation plans. Diller had noticed spotted owl numbers were slipping when he met Jack Dumbacher, ornithology curator at the California Academy of Sciences. Dumbacher needed to collect some barred owl specimens, and he had a permit to do so. Diller saw an opportunity. He realized he could apply for a permit from U.S. Fish and Wildlife to test whether barred owls were actually cutting into northern spotted owl populations. If the experiment supported Diller’s hunch, he could use the findings to inform future habitat conservation plans for Green Diamond, maximizing trees that could be sustainably harvested while protecting a threatened species. In 2009, with permission from the feds and the state Department of Fish and Wildlife, Diller set aside patches of timberland to remove barred owls. In other patches, he did nothing. After four years, he would see how northern spotted owl numbers differed in the areas with and without barred owls. Dumbacher and Diller went into the woods together at dusk, first playing a spotted owl call. If a spotted owl appeared, the pair moved on. If not, they played a barred owl call and waited for a barred owl to move to a perch for a clear visual identification. With one shot, Dumbacher killed the first bird. “It was quite traumatic, the first one,” Diller recalled. “It was so foreign, the idea of doing something like this. I couldn’t even watch him do it.” Eventually, he grew comfortable enough to kill the birds without Dumbacher’s help. But Diller’s study suggests his trauma has paid off: In the areas without barred owls, northern spotted owls are no longer declining. The study is the first to prove this treatment works. Green Diamond has applied for more permits to continue removing barred owls. Gary Rynearson, the company’s chief communications officer and forest policy director, said that more spotted owls does not mean Green Diamond will increase logging, but it does mean that current rates of logging can continue. Though logging companies have often been at odds with threatened species such as the northern spotted owl, the company is excited about the study’s results, Rynearson said. “When you can protect and sustain a business and jobs and also conserve the northern spotted owl,” he said, “why not do it?” Now, the Fish and Wildlife Service is conducting four other experiments over larger landscapes in Washington, Oregon and California. These studies could pave the way for more widespread management of barred owls if they continue to move farther south in California. +worker=15 pack_row=766 ntok=1024 reason=top_token_frac>=0.080(frac=0.103,count=105,token=;) text=(illness), Cody Eakin (knee) and Mattias Janmark (knee) out of the lineup. Video: WPG@DAL: Eaves doubles the lead with one-timer PPG 14. Nashville Predators (2-4-0) Total points: 32 Hit: The Predators, despite going 1 for 5 on Wednesday, lead the League with 10 goals on the power play. Miss: Filip Forsberg, who should be first or second on the Predators in shots, has no goals on 13 shots. He had 33 goals on 247 shots last season. 15. Ottawa Senators (4-2-0) Total points: 27 Hit: Craig Anderson had his best game of the season Tuesday when he made 22 saves in a 3-0 win against the Vancouver Canucks. Miss: The Senators allowed four or more goals in four of their first five games. 16. Vancouver Canucks (4-2-1) Total points: 23 Hit: They have gotten points (nine out of a possible 14) despite not getting a goal from Loui Eriksson, who has four assists. Miss: They have lost three in a row (0-2-1), allowing at least three goals in each game, which magnifies the fact that Eriksson hasn't scored. Others receiving points: Anaheim Ducks (19), New York Islanders (13), Calgary Flames (9), Colorado Avalanche (8), New Jersey Devils (6), Philadelphia Flyers (4), Los Angeles Kings (4), Boston Bruins (2). HERE'S HOW WE RANKED 'EM ARPON BASU 1. Montreal Canadiens; 2. Tampa Bay Lightning; 3. Washington Capitals; 4. Pittsburgh Penguins; 5. Edmonton Oilers; 6. St. Louis Blues; 7. Florida Panthers; 8. Minnesota Wild; 9. Detroit Red Wings; 10. San Jose Sharks; 11. New York Rangers; 12. Chicago Blackhawks; 13. Dallas Stars; 14. Ottawa Senators; 15. Vancouver Canucks; 16. Los Angeles Kings. AMALIE BENJAMIN 1. Tampa Bay Lightning; 2. Washington Capitals; 3. Pittsburgh Penguins; 4. St. Louis Blues; 5. Montreal Canadiens; 6. San Jose Sharks; 7. Chicago Blackhawks; 8. New York Rangers; 9. Florida Panthers; 10. Dallas Stars; 11. Anaheim Ducks; 12. New York Islanders; 13. Edmonton Oilers; 14. Nashville Predators; 15. Los Angeles Kings; 16. Detroit Red Wings. TIM CAMPBELL 1. Montreal Canadiens; 2. Tampa Bay Lightning; 3. Edmonton Oilers; 4. Washington Capitals; 5. Detroit Red Wings; 6. Minnesota Wild; 7. Pittsburgh Penguins; 8. New York Rangers; 9. St. Louis Blues; 10. Dallas Stars; 11. Chicago Blackhawks; 12. San Jose Sharks; 13. Vancouver Canucks; 14. Ottawa Senators; 15. Florida Panthers; 16. New Jersey Devils. BRIAN COMPTON 1. Montreal Canadiens; 2. Tampa Bay Lightning; 3. Edmonton Oilers; 4. Detroit Red Wings; 5. Pittsburgh Penguins; 6. St. Louis Blues; 7. New York Rangers; 8. Washington Capitals; 9. Minnesota Wild; 10. San Jose Sharks; 11. Ottawa Senators; 12. New Jersey Devils; 13. Florida Panthers; 14. Calgary Flames; 15. Dallas Stars; 16. New York Islanders. NICK COTSONIKA 1. Tampa Bay Lightning; 2. Pittsburgh Penguins; 3. Washington Capitals; 4. Montreal Canadiens; 5. New York Rangers; 6. San Jose Sharks; 7. St. Louis Blues; 8. Edmonton Oilers; 9. Detroit Red Wings; 10. Nashville Predators; 11. Minnesota Wild; 12. Chicago Blackhawks; 13. Florida Panthers; 14. Dallas Stars; 15. Ottawa Senators; 16. Vancouver Canucks. TOM GULITTI 1. Tampa Bay Lightning; 2. Pittsburgh Penguins; 3. Montreal Canadiens; 4. Washington Capitals; 5. St. Louis Blues; 6. New York Rangers; 7. Nashville Predators; 8. Florida Panthers; 9. Minnesota Wild; 10. San Jose Sharks; 11. Dallas Stars; 12. Chicago Blackhawks; 13. Edmonton Oilers; 14. Detroit Red Wings; 15. Philadelphia Flyers; 16. New York Islanders. ADAM KIMELMAN 1. Tampa Bay Lightning; 2. Pittsburgh Penguins; 3. Edmonton Oilers; 4. New York Rangers; 5. Chicago Blackhawks; 6. St. Louis Blues; 7. San Jose Sharks; 8. Washington Capitals; 9. Montreal Canadiens; 10. Dallas Stars; 11. Minnesota Wild; 12. Detroit Red Wings; 13. Calgary Flames; 14. Ottawa Senators; 15. Vancouver Canucks; 16. Florida Panthers. ROBERT LAFLAMME 1. Tampa Bay +worker=14 pack_row=792 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=3" blue Ethernet leash or racking up $9.95-a-day wireless charges, this little white box could be the handiest 7.58 ounces in your computer bag. Originally marketed as a device for extending the range of an existing Wi-Fi network or for beaming music from a computer to a home stereo system, Apple's Airport Express also functions as a wireless base station in its own right. Just plug that Ethernet cable into the box and the box into an unoccupied outlet. When you fire up your computer, the transmitter shows up, ready to be configured into your own private Wi-Fi domain. Share it with whoever is in the room with you or, if you don't enter a password, your neighbors down the hall. List price: $99 Philip Elmer-Dewitt Next Canon Powershot SD1100 IS Digital Elph Images courtesy of the brilliant Ghibli Blog. You may remember that earlier in the year I reported that animation god Hayao Miyazaki was drawing an aviation based manga Kaze Tachinu (The Wind Rises) for Japanese magazine Model Graphix. Well, it seems he’s been enjoying returning to his mangaka roots, and is now considering penning a sequel to his classic film Porco Rosso for the magazine. He prototyped the movie in manga form for the mag back in 1990 in the form of Hiktei Jidai, the French translation of which being the source of these fantastic images. Anime News Network has the lowdown: The potential sequel will have the title character piloting a Savoia-Marchetti SM.79 bomber from Italy, although the magazine says that Miyazaki will first see the Campini-Caproni experimental aircraft at Italy’s Museo storico dell’Aeronautica Militare di Vigna di Valle at an unknown future date. Model Graphix mag ran Miyazaki’s Porco Rosso prototype manga in 1990. This is hugely exciting news – Porco Rosso is one of my favourite Ghibli films, with its inclusion in my 10 anime films to see before you die list causing some controversy when I picked it over Spirited Away and Princess Mononoke. I do of course love both those films, but Porco Rosso will always seem special to me, it combining perfectly two of Miyazaki’s great loves: politics and aeronautical design. Let’s hope this project happens, and stay tuned as I’ll be keeping an eye on any news as it develops. By AFP Spanish police have detained a woman who faked her own kidnapping to test whether her husband would pay ranson, sending him a photograph of herself with bound hands and feet, police said. The man received the photo on his mobile phone from someone claiming to be one of the kidnappers along with a text message demanding a ransom of 20,000 euros (26,000 dollars) for her release, they said in a statement. The ransom request was repeated in later text messages as well as warnings that the man not go to police, which he ignored. Police launched a search and spotted her car, which they followed to a shopping mall in the town of Gandia on the Mediterranean coast. "The woman, who was travelling alone and was in perfect health, was the supposed victim of the kidnapping," the police statement said. At first she told police that she had been released that morning but later confessed to faking her abduction "to find out what her husband would be willing to do for her". In 2008 a Spanish court sentenced a woman to three-year-a-half years in prison after finding her guilty of extortion by faking her children's kidnapping seven times. GM will have at least a year advantage to make a case for the Chevrolet Bolt. Will it be enough to convince EV fans? The big automotive news since the beginning of this month has been all about the Tesla Model 3, the next vehicle coming from America’s electric car manufacturer. On March 31, Tesla CEO Elon Musk unveiled a prototype of the compact sedan and immediately tens of thousands of people placed $1,000 refundable deposits on a car that won’t arrive until late 2017 at the earliest. By late last week, the so-called pre-orders (advanced orders) totaled 325,000 and included early adopters from around the world. That’s a staggering number of people demonstrating interest in a car some believe will help make electric vehicles mainstream within the next few years. Although Tesla is +worker=4 pack_row=802 ntok=1024 reason=too_many_urls(count=3,max=2) text=-state figures on Christians in eastern Uganda. Uganda’s constitution and other laws provide for religious freedom, including the right to propagate one’s faith and convert from one faith to another. If you would like to help persecuted Christians, visit https://morningstarnews.org/resources/aid-agencies/ for a list of organizations that can orient you on how to get involved. If you or your organization would like to help enable Morning Star News to continue raising awareness of persecuted Christians worldwide with original-content reporting, please consider collaborating at https://morningstarnews.org/donate/? ### 2017 Morning Star News. Articles/photos may be reprinted with credit to Morning Star News. Morning Star News is a 501(c)(3) non-profit corporation that relies solely on contributions to offer original news reports of persecuted Christians. By providing reliable news on the suffering church, Morning Star News’ mission is to empower those in the free world to help and to encourage persecuted Christians that they are not forgotten or alone. For free subscription or to make tax-deductible donations, contact editor@morningstarnews.org, or send check to Morning Star News, 34281 Doheny Park Rd., # 7022, Capistrano Beach, CA 92624, USA. After a fair amount of time out of the spotlight, Ed Sheeran is jumping right back in. On Friday morning, he released two new songs, and now he's giving interviews to lots of different outlets. In one of those chats, the singer/songwriter shared an interesting story he heard from Rick Rubin, who produced both Sheeran and Em, about the first time Kendrick Lamar and Eminem worked together, on a session that would eventually become the song "Love Game" on The Marshall Mathers LP 2. "I heard a very cool story about Eminem and Kendrick Lamar," Sheeran told The Zach Sang Show. "Eminem...heard that Kendrick Lamar was the best rapper and he invited him to the studio to get him on a song. He arrived and Kendrick came with all his mates and Eminem said, 'I just want you in the studio, just you on your own. And then my engineer is gonna come in and then record you doing it. But your mates aren’t allowed in.'" The reason for the privacy? "Eminem said that he did it to test Kendrick because he thought he had a ghostwriter," Sheeran explained. "He then realized that he didn’t" after Kendrick proceeded to write "a sick verse." POST CONTINUES BELOW You can hear Sheeran tell the story himself at around the 7:50 mark of the video below. Rick Rubin presumably heard this story directly from Eminem, rather than having been there himself. Lamar and Rubin met for the first time just a few months ago for a GQ cover story. Letters (Photo: File photo) I’m Jim Tosone, the New Jersey Libertarian Party’s nominee for State Senate in the 39th Legislative District, which includes many towns in Northern Bergen County. I’ve lived in Washington Township in the district for nearly 30 years. You may be surprised to know that of the 157,000 registered voters in the District, 45 percent are registered as Unaffiliated. They are the politically homeless, who don’t identify with either of the two old parties. They either don’t vote or reluctantly vote for the lesser of two evils. Only 37 percent of eligible voters even voted in the last District 39 Senate race. For the Unaffiliated voters who are concerned about government spending, and interference in our personal/economic lives, I will give them another choice in November. A real choice. The issues I will focus on are: 1. Reducing the major areas of State spending (by reforming Public Pension, Medicaid, School, and Transportation programs) 2. Using those savings to reduce taxes (Income, Sales, Gas) and begin paying down our debt 3. Expanding School Choice (Backpack Funding, Vouchers, Charter Schools) 4.Legalizing marijuana and ending the failed War on Drugs If mainstream media would give me the same coverage they give the two old parties, and if debate-sponsoring organizations would include me in debates, District 39 voters will learn that they have three choices for State Senate on the ballot in November. Jim Tosone Washington Township Read or Share this story: https://njersy. +worker=11 pack_row=873 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=impressive artist in the realm of trap, 808, and bass music. ConRank’s got an impressive catalogue and collaboration roster, which includes DJ Shadow, Subp Yao, Doshy, Goldfinger, and Bleep Bloop. For his upcoming EP with Saturate Records, Ma Fan (, meaning Trouble), he enlisted a slew of artists, included the latter of the aforementioned list of collaborators. Today, we premiere Bleep Bloop‘s remix of “Jetlaggin”. Dark, calculated, and echoing with reverb, this remix takes Messy MC‘s lyrics to a different dimension where fractal geometry and towering structures bleed vantablack. The original was a bit more instrumental and dubstep-influenced with its wobs and horns, but Bleep Bloop gave it his typical analogue once-around, then did it again with his iconically clean percussion. After his revision, the two versions sound nearly 100% different but with equal merit. Listen to Bleep Bloop‘s remix of “Jetlaggin” below and pre-order ConRank’s 13-track Ma Fan EP here, scheduled for release on September 29th on Saturate. First established in 2010 as a social media experiment amongst friends, Non-League Day continues to grow from strength to strength, helping provide much-needed focus on the vast, rich tapestry that is non-league football in the UK. James Doe, the man behind Non-League day’s creation, admits he had ‘no idea it would grow to what it has become’ when he started the event, having been inspired by a pre-season trip to watch QPR play at Tavistock, but his brilliant idea has been picked up and run with by supporters around the country, not to mention endorsed by Premier League and Championship clubs, charities, celebrities, supporter organisations like the Football Supporters’ Federation and even MPs. The aim of Non-League Day, per the website, is “to encourage fans to watch their/a local non-league side play, providing a much needed boost to grass roots football and an alternative match day experience which many will be unfamiliar with.” Every year it runs on an international weekend, providing an excellent alternative for Premier League and Championship fans who find themselves without a live game to go to. Non-League Day was held on 13th October this year, and many of those who took part and attended games across the country uploaded their pictures onto Instagram, the photo-sharing program / mobile phone-powered social network that has become a phenomenon of late and was recently acquired by Facebook for a cool $1billion. As lovers of both grassroots football and photography at Just Football, we’ve selected the 11 best Non-League day pictures on Instagram and collated them in the gallery below. Personally I think these images really capture the atmosphere and camaraderie around what is an important and downright fun day in the football calendar, and they are of course all diverse and very well-taken. Non-League Day is a truly wonderful initiative and a significant one at that. With financial resources squeezed ever tighter by the day lower down football’s food chain, the money spent on supporting local amateur teams like those included below has a real effect on the clubs and the communities that surround them. What’s more, going to watch non-league football is a world away from what some consider the expensive, increasingly canned and monotonously-packaged atmosphere that is Premier League football. Certainly the opportunity to sit/stand with friends, watch a local team that truly values your support and drink what you like makes a refreshing change. Sadly I couldn’t make it to watch Haringey Borough this year (they played away from home), but I’ll be down at Coles Park very soon having been introduced to them in Non-League Day’s inaugural year in 2010. If you have Instagram, be sure to add and follow all the talented takers of these excellent pictures – their Instagram usernames are included in the captions below the respective images. If you wish to check out more Instagram photos then look for the #nonleagueday hashtag on the app. And if you do have Instagram then don’t forget to follow us too on @JustFootball! Enjoy the 11 images via our gallery here – and if you attended a non-league game this weekend feel free to let us know below. La Flaca Cafetera is a literal hole in the wall. Its counter, steam tables and register take up the back quarter of a produce warehouse in +worker=8 pack_row=896 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=s, loincloths, and whatever else you’d call this look: Modern geezers in the time of Caesar! Brand new series #Bromans. Starts Thursday 14th September 9pm @itv2 pic.twitter.com/KJqpQWgpst — ITV2 (@itv2) August 30, 2017 The show is poised to be one beautiful disaster that feels like a combination of back-in-time reality shows like Victorian Slumhouse by way of Geordie Shore. See members of the cast preview your new guilty pleasure below, which promises lots of testosterone, tragically chipped nails, and even a few butt cheeks. Andiamo! American architect Steven Holl has completed his new building for the Glasgow School of Art in Scotland, where its geometric matte-glass exterior stands in contrast to the decorative sandstone facade of Charles Rennie Mackintosh's masterpiece across the street (+ slideshow). Steven Holl's Reid Building provides modern studios for the Glasgow School of Art and was designed to forge "a symbiotic relationship" with the historic campus building completed by Scottish architect Charles Rennie Mackintosh a decade century earlier. The new five-storey-high building replaces the school's Newbery Tower and Foulis Building, but wraps around the three-storey stone Assembly Building, which houses the school's popular student union. One of the main aims of the design was to bring as much natural light as possible into the building, so Holl created three cylindrical shafts of light that he calls "Driven Voids", which stretch right down from the roof to the basement. Spaces inside the building were also arranged with respect to their lighting requirements, so the majority of studios and workshops are positioned along the northern edge of the plan, where they will receive more consistent levels of daylight. A central network of staircases and ramps extends around, beside and across the three lightwells, helping students to orientate themselves within the building. These link all of the floors, including the two basement levels, and lead up from the lobby, exhibition galleries and seminar rooms of the ground floor to workshops, studios, project rooms and a lecture room elsewhere in the building. Artist and former Glasgow School of Art student Martin Boyce was commissioned by the architects to design a piece to mark the entrance to the new building, and his screen of painted steel and glass vines hangs down from the ceiling. Describing the piece as "a flourish of coloured glass catching and projecting washes of light," Holl explained: "We see this colour in positive contrast to the original colours of Mackintosh and an inspiration to students and the community." The architects are also planting a terrace outside the building, which is intended to resemble the grassy machair plains that are particular to parts of the British Isles. Photography is by Paul Riddle. Here's some more information from the Glasgow School of Art: The Reid Building Glasgow, United Kingdom (2009 – 2014) Following an Estates Review that established, with the exception of the Mackintosh building, the School's Garnethill estate of some nine separate buildings was no longer fit for purpose, a plan was developed with the aspiration to create a more focused campus of facilities to provide the GSA with world class spaces. The core principle of Phase 1 of the campus plan was to create a new, purpose-built academic building housing a broad range of studios and teaching facilities for the School of Design, as well as workshops, lecture facilities, communal student areas and exhibition spaces for the School as a whole, and a new visitor centre. Steven Holl Architects of New York, in association with Glasgow-based JM Architects and Arup Engineering, were selected in September 2009 to design and deliver the Phase 1 building, which will be called the Reid Building in honour of Dame Seona Reid who stood down as Director of the GSA in the summer of 2013, to sit fittingly opposite the category 'A' listed Mackintosh building. The development (including costs incurred in the re-housing of the School of Design during the re-build) has been funded by a grant from the Scottish Funding Council. The development has been delivered on time and on budget. The Design The Reid Building, which replaces the Newbery Tower and Foulis Building, is in complementary contrast to Charles Rennie Mackintosh's Glasgow School of Art (1899 - 1909) - forging a symbiotic relation in which each structure heightens the integral qualities of the other. A thin +worker=1 pack_row=877 ntok=1024 reason=top_token_frac>=0.080(frac=0.080,count=82,token=) text=to be a boost for Syrian President Bashar Assad’s claims that all forces against IS must unite with Damascus in order to work effectively. “The Syrian government will try to use this incident as further proof that the US should coordinate with it in order to achieve a more active approach to eliminating ISIL from Syria and Iraq,” Ebrahim told RT. Read more Moscow has voiced its concern regarding reports of the civilian deaths and was also worried about US-led coalition forces conducting air strikes against Syrian government troops in Deir ez Zor on Sunday, a statement from the Russian Foreign Ministry reads. The act, which killed three Syrian Army soldiers was seen by Damascus as an “act of aggression.” On top of the fatalities, 13 personnel were injured and a number of military vehicles were destroyed when warplanes fired nine missiles at the Saeqa military camp. The incident is the first of its kind since the coalition started to bomb Syria more than a year ago, though the US-led alliance continues to deny it carried out the airstrike. “We’ve seen those Syrian reports but we did not conduct any strikes in that part of Deir ez Zor yesterday. So we see no evidence,” said Warren. A US military official speaking on condition of anonymity told Reuters that Washington is certain that Russia is responsible for the airstrike. Ebrahim believes this airstrike against Syrian Army troops could have been undertaken as a warning to Moscow. “Many believe this is a message not to the Syrian government, but to the Russian government to say that despite the deployment of the S-400 air defense systems in Syria – the US still gets its way in Syria and can bombard anyone it wants, including Russia’s closest ally in the group – the Syrian Army,” he said. Hide Transcript Show Transcript WEBVTT THE COURTROOM AND YOU HAD A CHANCE TO TALK TO THE SUSPECT ONE ON ONE. REPORTER: JEFFREY ALAN BURGESS SAYS HE WAS HEAVILY INTOXICATED AND THEN WAIVED HIS PRELIMINARY HEARING, BUT WE'RE NOT SURE IF THAT'S A GOOD ENOUGH REASON FOR THE DOZENS OF PEOPLE WHO SHOWED UP FOR THE VICTIM OF ETHNIC INTIMIDATION. JEFFREY ALAN BURGESS DIDN'T UTTER ONE WORD IN FRONT OF TELEVISION CAMERAS AT HIS PRELIMINARY HEARING. POLICE SAY HE BEAT AN INDIAN MAN IN HIS FACE AND HEAD WHILE INSIDE THIS RED ROBIN RESTAURANT AT SOUTH HILLS VILLAGE MALL. AFTER, HURLING RACIAL EPITHETS AT THE MAN. >> IT'S WHAT EVERY DAY MINORITIES IN THIS COUNTRY HAVE TO DEAL WITH. REPORTER: MANY SHOWED UP ON BEHALF OF THE VICTIM. >> I DON'T HAVE ANY COMMENT RIGH NOW. REPORTER: HE DID NOT WANT TO DISCUSS THE INCIDENT. HOWEVER, BURNLES, THE MAN ACCUSED OF BEATING MEHTA AND ETHNIC INTIMIDATION, DID TALK WITH ACTION NEWS 4 OFF CAMERA BEFORE THE HEARING, BURGESS SAID, QUOTE, IT WAS THE ALCOHOL, I'M NOT THAT KIND OF PERSON, IT HAPPENED, AND I'M REMORSEFUL ABOUT IT. BETHEL PARK POLICE SAY BURGESS THOUGHT MEHTA WAS OF MIDDLE EASTERN DESCENT. BUT HE IS INDIAN. >> THIS TEARS AT THE FABRIC OF OUR SOCIETY. WE NEED TO WORK TOGETHER AS AMERICANS. REPORTER: BURGESS IS CHARGED WITH ETHNIC INTIMIDATION, HARASSMENT AND PUBLIC DRUNKENNESS, THIS CASE HAS BEEN Advertisement Man accused of ethnic intimidation, assault at Red Robin indicted Jeffrey Burgess was indicted on a charge of violating Hate Crimes Prevention Act. Share Shares Copy Link Copy A man accused of ethnic intimidation and a physical attack at a South Hills +worker=13 pack_row=909 ntok=1024 reason=too_many_urls(count=4,max=2) text=and to the SPL matches of EG-TL. You have probably seen her in the stream or VODs of SPL. After the match, she was interviewed by a Chinese media. And we have a chance to hear what Jaedong's fangirl would say.When she was asked why she is so obsessed with Jaedong, she said:"I first knew him from a friend's page on www.renren.com (a Facebook-like website in China). I thought he looks pretty cute, so I want to know him more. I went to watch his profile, VODs, etc. Actually I have played a little StarCraft, but you know, this type of game to a girl...[is not easy]. Now I hav been trying my best to watch every game of him, though I don't understand all the things. Jaedong gives me a different feeling. How to put it. He is steady and serious, but when he is playing games, he looks sharp. He gives me a deep resonance "When she was asked how to describe this feeling even further, she said:"My love for Jaedong is like this: when I think of him practicing for 14 hours a day, my heart hurts and I want to massage his shoulders and make hot soups for him."Source: http://sc2.neotv.cn/24429.html BREAKING: OAN Offers $100,000 for Information on Seth Rich Murder — Total Reward up to $245,000 On July 8, 2016, 27 year-old Democratic staffer Seth Conrad Rich was murdered in Washington DC. The killer or killers took nothing from their victim, leaving behind his wallet, watch and phone. Shortly after the killing, Redditors and social media users were pursuing a “lead” saying that Rich was en route to the FBI the morning of his murder, apparently intending to speak to special agents about an “ongoing court case” possibly involving the Clinton family. Seth Rich’s father Joel told reporters, “If it was a robbery — it failed because he still has his watch, he still has his money — he still has his credit cards, still had his phone so it was a wasted effort except we lost a life.” The Metropolitan police posted a reward for information on Rich’s murder. In August Wikileaks offered a $20,000 reward for information on the murder of DNC staffer Seth rich. Julian Assange also suggested in August that Seth Rich was a Wikileaks informant. Via Mike Cernovich: ** On Friday American businessman Martin Shkreli offered $100,000 reward for information on Seth Rich’s murder. Now this... ** OAN offered $100,000 reward for information on Seth Rich’s murder. This report says OAN offered $250,000 but it cannot be verified. “At what point does one coincidence or a hundred add up to something approaching the truth” #SethRich@OANN https://t.co/VnxgVKPAJR — Ockham’s Razor (@MiddleUSA) May 28, 2017 That brings the total up to at $245,000 in cash reward for information on Seth Rich’s murder. . (Photo: Getty Images) A 53-year-old Random Lake man was shot in the leg Wednesday afternoon in a hunting accident in the town of Fredonia. The Ozaukee County Sheriff’s Office responded to Oriole Lane north of Jay Road in the town of Fredonia just before 12:30 p.m. Wednesday for a report of a subject in the woods with a gunshot wound. A preliminary investigation found that a hunting party of five was participating in a deer drive when two people shot their rifles in the direction of another man participating in the drive while attempting to shoot a deer. A bullet struck the Random Lake man in the upper left leg. Members of the hunting party provided immediate first aid until an Ozaukee Sheriff’s Deputy arrived on scene and took over care. Waubeka Rescue responded along with the Port Washington Paramedic Unit. Flight for Life responded to the scene and transported the subject to Froedtert Hospital in Milwaukee with serious but non-life threatening injuries. The Wisconsin DNR is leading the investigation and the Ozaukee County Sheriff’s Office is assisting. The incident appears to be an accident and not an intentional act, according to the sheriff's office. Read or Share this story: http://shebpr.es/2iGUJNY I love Node. +worker=11 pack_row=947 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=sick and scared and helpless, is gun violence especially in the form of mass shootings, which have surged even as overall gun violence has declined. How do we reconcile the rise in mass shootings with the larger, more encouraging downturn in gun violence? And would it be possible, perhaps, to address mass shootings from a health policy perspective? Might that possibly be an avenue worth exploring if it means we could prevent even one more life from being brutally abbreviated? That would seem like an area ripe for public health research. Unfortunately, government agencies like the Centers for Disease Control and Prevention are legally barred from doing it, thanks to this thing called the Dickey Amendment. The National Rifle Association aggressively lobbied to shut down public health research on gun violence. The NRA, with its millions of dollars in bribes to lawmakers, won. More: NY Mag, Time, The Independent. Matthew Toffolo's Summary Alan Heim is an Oscar & Emmy winning editor. Many will say that he’s one of the greatest editors in the history of cinema. All you need to do it watch “Network” (1976), and “All that Jazz” (1979) to see the uniqueness of his talent. If you haven’t seen those films I highly suggest you do because they are timeless in their themes and character studies. It was an honor to chat with Alan about his career. A career that’s still going strong at 80 years of age. Matthew Toffolo: In the last many years you’ve worked with director Nick Cassavetes in collaboration (The Notebook, My Sister’s Keeper, The Other Woman, Alpha Dog). How did you first meet? What makes your working relationship so strong? Alan Heim: I believe Dede Allen (Editor: The Hustler, Bonnie & Clyde) suggested I cut “The Notebook” and Nick and I have gotten along together very well since... 2015, a year that will be remembered in the UK for at least two things -- a dramatic election, and the "Clarkson Saga". With Top Gear as it previously existed now almost certain to disappear, it seems Netflix is scrambling to pick up the lucrative pieces with a pun-laden car show of its own. According to The Mirror, Netflix is in talks with the Top Gear trio (Jeremy Clarkson, James May and Richard Hammond) to front a new exclusive show called House of Cars, a play on the title of Netflix's most popular exclusive show, political drama House of Cards. Executive producer Andy Wilman is said to be considering jumping ship from the BBC too, with it being unlikely that the BBC would hand over the rights to the Top Gear name. As it stands, neither Netflix nor the Top Gear stars are confirming any details, meaning that any eventual show (should the rumours prove true) would be at the earliest many months away. I can picture it now: Kevin "Frank Underwood" Spacey taking on the Stig out on the test track. The only question that remains is who would prove to be the bigger arsehole; Underwood or Clarkson? [Mirror] Anonymous lottery player drops winning ticket in Salvation Army kettle MIDDLETOWN, Pa. — An anonymous Pennsylvania Lottery player recently deposited a winning instant ticket worth $1,000 into a Salvation Army red kettle. “The Christmas season often brings out the best in people,” said Lottery Executive Director Drew Svitko. “It’s heartwarming to hear stories such as this one, and I applaud this anonymous winner for turning their good fortune into an act of charity that will benefit the community.” The prize-winning ticket for the Fantastic 10s instant game was dropped into a Salvation Army red kettle at a Walmart in Erie on December 6, 2016. “We’ve received donations of winning instant tickets in the past, but they’re usually in an amount of $10 or $20 – never something of this size,” said Major Leslie Walter, officer of the Salvation Army in Erie. “We are very grateful for this generous donation, which will help us to serve people and families in need.” The 28-county Western Pennsylvania Division of the Salvation Army serves thousands of needy families through a variety of support services. Visit them online here. When the ancient Egyptians prepared a mummy they would scoop out the brain through the nostrils and throw it away. While other organs were preserved and entombed, the brain was considered separately from the rest of the body, and unnecessary for life or afterlife. Eventually, of course, healers and scientists realized that the +worker=5 pack_row=987 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=Inside of an Islamabad airport, a young woman was brutally assaulted by a Hijab-wearing Muslima security guard . . . EVERYBODY around her just watches, all of the men, all of the women, EVERYONE. WATCH: O Pakistan! Hijabi Airport Security caught on video beating women inside Islamabad Airport as dozens of uniformed men look on as spectators pic.twitter.com/5WEktnf4iV — Tarek Fatah (@TarekFatah) April 19, 2017 In Islamic culture, this is more than acceptable, it is encouraged. Users on Twitter took to condemning the violence while Islamic apologists and Sharia Law advocates chimed in to condemn those condemning evil: @TarekFatah This is the religion of peace we called it Gunda gardi hey bas just like @sonunigam say it — PuniT KumaR (@kumar_punitkm) April 19, 2017 Oh, how tolerant of you . . . @kumar_punitkm @TarekFatah @sonunigam How do u know about the religion of these women? — syed ahmad jamal (@ahmadjamal786) April 19, 2017 Meanwhile, the Pakistani government stays uncomfortably silent on the topic: @TarekFatah Such a bloody shameful incident & entire Pk Govt keeping silent? implicitly they approve of this kind of police brutality; Pakis beware — raghav (@raghav2k) April 19, 2017 @TarekFatah The so called “men” crowd around like it’s entertainment — Brad Rogers (@BradRog10586386) April 19, 2017 THIS IS THE “RELIGION OF PEACE” – IF YOU DO NOT LIKE WHAT YOU SEE, SPEAK UP. All three Democratic presidential candidates are expected to attend an extra debate in New Hampshire, just days ahead of the state's first-in-the-nation primary, according to debate host MSNBC. The cable television network announced the details of the Democratic debate Sunday, after nearly a week of infighting among the campaigns over whether more debates should be added to the packed primary schedule. The forum will convene on Thursday, Feb. 4 at Durham's University of New Hampshire, starting at 9 p.m. ET. NBC News host Chuck Todd and MSNBC anchor Rachel Maddow will moderate the debate. Earlier this week, the Sanders and Clinton campaigns consented to add three more debates to the primary calendar, in addition to the Feb. 4 forum in New Hampshire. On Sunday, the Democratic National Committee (DNC) agreed to sanctioning the additional primary debates. "Our Democratic candidates have agreed in principle to having the DNC sanction and manage additional debates in our primary schedule, inclusive of New Hampshire this week," DNC Chair Rep. Debbie Wasserman Schultz said in a statement Sunday. "However, absent agreement on the details, we will give our campaigns the space to focus on the important work of engaging caucus goers in Iowa." The committee plans to "reconvene negotiations and finalize the schedule" with campaigns by Tuesday morning, after the first nominating contests in Iowa wrap up. New Hampshire residents will vote in the state primary on Feb. 9. (Beirut) – A Prominent Bahraini human rights activist faces up to 12 years in prison for criticizing the Saudi Arabia-led military operations in Yemen. Bahrain has been taking part in the Saudi-led coalition, whose operations have included unlawful airstrikes on markets, homes, hospitals and schools. Expand Nabeel Rajab on the day of his release from detention on bail, on November 2, 2014 in Manama, Bahrain. 2014 Ahmed Al-Fardan The charges against Nabeel Rajab, head of the Bahrain Center for Human Rights, a nongovernmental group, constitute a serious violation of his right to freedom of expression, Human Rights Watch said. The conditions of his detention also appear to amount to arbitrary punishment. He was in solitary confinement for more than two weeks after his arrest and denied compassionate leave to attend a relative’s funeral. He faces an additional three years for comments about the Bahrain government’s response to prison unrest. “Unlawful Saudi-led airstrikes bombed markets and hospitals, killing hundreds of civilians, but the person facing prison time is the one who criticized them,” said Joe Stor +worker=9 pack_row=1051 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=anbeyan, just before midnight on Thursday. The boys have each been charged with murder, robbery, wounding with intent to cause grievous bodily harm, aggravated entering of a dwelling with intent and aggravated car theft. The older teen faces an additional charge of assault occasioning actual bodily harm. The teenagers faced an extradition hearing at the ACT Children's Court today. () One of the suspects' mother was also at court. () They did not apply for bail while appearing via video link at the Parramatta Children's Court this morning. Bail was formally refused by the magistrate ahead of their next court appearance in the same court on Tuesday. Police earlier said "physical evidence" found at the scene of the stabbing led them to believe it may have been an act of terrorism and they were investigating the 16-year-old for possible terror links. No terror related charges have been laid. The pair faced the ACT Children's Court in Canberra yesterday and were promptly extradited to NSW. Meanwhile, the mother of one of the two teenage boys has declared her son "is not a terrorist". "No one knows the truth," she said. In addition to the fatal stabbing, police are investigating the pair’s alleged involvement in a number of incidents in Queanbeyan and the ACT on Thursday night and early Friday morning including an attempted robbery at a bottle shop in the ACT, an attack on a homeless man and an assault at a unit in Queanbeyan, and later an attack where a man was stabbed and his vehicle stolen. Zeeshan Akbar was studying and working to send money home to his family. (Supplied) () Police said they attempted to pull over a silver Ford sedan about 6.35am Friday in NSW, but the driver allegedly fled, leading to a police pursuit before the vehicle crossed the border into the ACT. The pair were later arrested on the Monaro Highway without incident. A weapon was allegedly found inside the vehicle. Akbar, the eldest of four children born in Pakistan, was studying and working at the service station to send money back to his family. His only relative in Australia, Ifran Khan, told 9NEWS he was "a friendly person to everyone". "It's such a big loss," he said. Anyone with information is urged to contact Crime Stoppers on 1800 333 000. Nine Digital Pty Ltd 2019 Movie industry wants the right to take your house off the net without full judicial review The motion-picture industry has spoken out against a New Zealand proposal to allow them to disconnect entire households from the Internet if one member is accused of copyright infringement; they want to be able to disconnect your Internet connection without giving you a chance to defend yourself in front of a judge because that would be "time consuming." Instead, they would like to be lord high executioner for your network connection, with the power to shut you out of the benefits of the network (freedom of speech, assembly and the press; access to school, health, family, work and government) without having to prove it in a real court of law. The motion picture industry has become one of the gravest threats to modern democracy. I've given up on hoping that they'll see the light. Now I just hope they'll go bankrupt before they can bring on a new dark age, all in the name of preserving the future of fifth-rate sequels to Z-rate adaptations of schlocky comic books. FACT director Tony Eaton says that his organization doesn't have a problem with judicial process - as long as it's on their terms. "The concern is that we send out 1000 infringement notices, and then someone says, The way to stall this is let's all go to arbitration', and a year later we could still be going through that same process," Eaton said. "Do we get to the point where we have 1000 cases to be heard by the Copyright Tribunal? If everyone brings their lawyer, we will only do five in a day," he added. By anyone's measurement, even given the lack of accuracy inherent in some anti-piracy evidence, 100% error rate and 100% appeals is a little pessimistic to say the least and to suggest everyone would bring a lawyer is absurd - the cost would be hugely prohibitive. Nevertheless, Mr Eaton said he would prefer to be able to present evidence in bulk to the tribunal - in search of corresponding disconnections in bulk, no doubt. Movie Studios Want Own Version of Justice For 3 Strikes +worker=0 pack_row=994 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=the Obamacare negotiations, Americans would see who’s really on their side. Indeed. Perhaps that’s why Mr. Obama never intended to air these in the first place. C-SPAN founder and CEO Brian Lamb later explained that his television network would have broadcast the negotiations, but “He never asked us .” Perhaps the most disturbing of all: “I will never forget my own mother, as she fought cancer in her final months, having to worry about whether her insurance would refuse to pay for her treatment.” — Barack Obama, August 2009 The depths of the president’s dishonesty are fully revealed by his willingness to dishonor his own departed mother when he falsely claimed that her health insurance company attempted to cancel her policy. In actuality, Ann Dunham’s employer-based policy not only paid for her hospital bills and cancer treatment in full, they afforded her care at prestigious institutions like Memorial Sloan Kettering and the Straub Clinic. The deceit is breathtaking. Obamacare is the most disastrous law of our lifetimes, one that was forced upon us in the most dishonest of ways in order to fundamentally transform America from the Land of the Free into a nation of dependents. The Obamacare days of reckoning have barely begun, and our only salvation now is to repeal this train wreck in its entirety and to be honest with Americans about what measures actually work: patient-centered, market-driven reforms. Dr. Milton R. Wolf is a radiologist and a contributor to The Washington Times. Copyright 2019 The Washington Times, LLC. Click here for reprint permission. Metro Manila (CNN Philippines, November 21) — After publicizing a complaint which accused former Dangerous Drugs Board (DDB) Chair Dionisio Santiago of going on unnecessary junkets and receiving favors from an alleged narcopolitician, Malacaang stressed it never said the allegations were true. Presidential Spokesperson Harry Roque on Tuesday emphasized he did not say the allegations are gospel truths. Roque's clarification comes a day after he provided the media a copy of the supposed complaint by the DDB Employees Union. The DDB employee undersigned in the supposed complaint has denied drafting the letter. "I was very clear, if there are allegations in a complaint, we did not say they are the truth and that is why I understand, General Santiago was somehow hurt. But I emphasize, we have never alleged that they are gospel truth, they are allegations, which I'm sure, he can easily dispute," Roque said during a media briefing. Roque said Santiago, who has also denied the allegations, was not fired because of the complaint. "Hindi po siya tinanggal dahil doon sa letter complaint. Nilabas po ang letter complaint upang ipakita lamang na bagama't ang dahilan ay dahil doon sa mga sinabi sa Mega Rehab facility, eh meron na ring complaint laban kay General Santiago. Hindi po namin sinabi na katotohanan ang lahat ng sinabi ng complaint." However, on Monday, Roque was quoted as saying, "He (Santiago) was also let go because of complaints that General Santiago was using taxpayers' money for junkets abroad... There were also complaints that General Santiago may have accepted consideration from major drug players." Verified complaint? It is unclear what steps were taken by the President's office to verify the complaint but Roque stressed such complaints, especially those pertaining to appointed officials who serve at the pleasure of the President, don't need to be verified for the President to consider firing them. "It's been overtaken by events because the resignation came about," says Roque when asked if steps were taken to verify the allegations in the letter sent last October. He added "If at all, maybe what we're stressing is perhaps there was additional displeasure because of the pendency of the complaint." Roque says Santiago's case reflects President Duterte's zero tolerance against corruption. Mixing protein powders, fish oils, vitamins and minerals into a blender and drinking the results is seen in Silicon Valley as the new way to consume a healthy diet without the burden of eating real food It is late evening and biochemist George Bonaci, 27, is standing in the kitchen of the San Francisco technology hub where he works, casually making the next day’s breakfast and, quite possibly, lunch and dinner too. He puts various protein +worker=3 pack_row=1131 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=Fresh Air Our first tip is obvious and the most common. A little vacuuming and fresh air never hurt. But, make sure to do a thorough job. Get your vacuum into each and every pocket and crease in your bag to eliminate all dirt, grass, and sweat. Then, once you’ve finished, leave the bag outside for at least 24 hours. Let that bag breathe! >>> Homerun Savings On Hand-Selected Baseball & Softball Bats 4.) Dryer Sheets / Tea Bags This is more of a temporary fix than a permanent one. Pick a dryer sheet or a tea bag; not both. Place a couple of tea bags or dryer sheets in your bag and let them sit overnight or for a couple of days. Once the fresh scent fades and the items are no longer absorbing the bad smells, replace them with a new one. 3.) Water With Soap First off, it is not recommended to throw your sports bag into a washing machine. That may ruin your bag and, potentially, your washer too. Hand washing is the safest way to go. Be warned, you will need to really scrub and use a scented soap that you like. Not only will your bat bag no longer stink, but it will actually smell good when you’re done. A welcomed change! 2.) Antibacterial Wipes / Preventative Care Always keep disinfectant wipes in your bat bag! You never know what might spill or end up in your bag to make a mess. Rather than wait until later, or completely forget about it, this allows you to clean up any dirt and grime right away. This tip doesn’t help remove the stink from your bat bag. Instead, it helps prevent it. Do this between washes to help kill any bacteria or germs, which tend to be the cause of bad odors. 1.) Wash Your Car Wait, what? Our absolute favorite tip will help kill two birds with one stone. You can not only clean out your stinky bat bag, but you can get a car wash at the same time. Here’s how. Take your smelly bag, and your car, to your nearest self service car wash. Most, if not all, of these self service establishments will have car mat clips that are intended to hang up your floor mats. Once you’re done cleaning your car and your floor mats, you will be able to hang your bat bag from the same car mat clips. Hang the stinky bat bag up and treat it as if it were your car. If you do not have access to a self service car wash, then a clothesline with clothes pins will suffice. Disclaimer: some bat bags are beyond repair on the stinky scale and these tips may not work. If it has come to that point, it is best to start looking for a new bat bag. Or, you can follow JustBats on social media and keep an eye out for our next bat bag contest! Also, if you ever have any additional questions, concerns, or requests, give our Pros a call at any time of the day at (866) 321-2287. We are always happy to help and are here for you from click to hit! British motoring rag AutoExpress has hurled an interesting image at the world of what is supposedly the internals of the upcoming 2010 Honda NSX (or Acura NSX for our US friends). Thereâ€TMs nothing to say this is an official image, but if it isnâ€TMt, itâ€TMs a bloody dedicated (and clairvoyant?) fan whoâ€TMs put this one together. AE says the new NSX will be every bit as advanced as the Nissan GT-R, and will be looking to claim scalps such as the Ferrari F430, Aston Martinâ€TMs V8 Vantage, and, of course, the Porsche 911 GT3. Why not? Pumping out a reported 417kW from its front-mounted 5.5-litre V10 engine and getting it to the ground via a paddle-shifted six-speed semi-auto transmission and Hondaâ€TMs Super-Handling All-Wheel-Drive (SH-AWD), the new NSX may be a 'slight' step forward from its 208kW 3.0-litre V6 predecessor. AEâ€TMs scribes reckon weâ€TMll be looking at AU$230,000 when it hits the floors in late 2009. Considering the Nissan GT-R is expected to go for around $160,000, thatâ€TMs an†interesting figure. In World of Warcraft I am a +worker=12 pack_row=1161 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=those tradeoffs, and remains cost-effective as you grow, with pricing as low as 5 per million message operations for sustained usage. General availability is a key milestone, though hardly the end of the road. We are continuing to innovate with the alpha release of the gcloud pubsub tool and today’s beta release of our new Identity and Access Management (IAM) APIs and Permissions Editor in the Google Developers Console.These improvements allow users to control access down to the level of particular operations on specific topics and subscriptions. IAM ACLs make it easier to connect multiple Cloud Platform projects, either within the same organization or to third-party services. Get Started We’re looking forward to this next step for Google Cloud Platform as we continue to help developers and businesses everywhere benefit from Google’s technical and operational expertise in big data. Please visit Cloud Dataflow and Cloud Pub/Sub to learn more and contact us with your feedback, ideas for new connectors, or even new public data feeds we can help you share. - Posted by Eric Schmidt (not that Eric), PM Cloud Dataflow & Rohit Khare, PM Cloud Pub/Sub By Edward Chaykovsky WBA/IBO middleweight champion Gennady "GGG" Golovkin is picking Saul "Canelo" Alvarez to unseat WBC middleweight king Miguel Cotto in November. The two superstars are expected to collide in the fall, with November 7 and November 21 as the two popular dates being mentioned. Las Vegas still appears to be the frontrunner to host, with the MGM Grand and the Thomas & Mack Center as the venues of choice. Golovkin also holds the WBC's interim title. The World Boxing Council has ordered the Cotto-Canelo winner to face Golovkin next. GGG sees it as a very close fight, but gives Canelo the edge to win. "It's 50-50, but I think so Canelo [will win]," Golovkin told Max Kellerman on Sports Nation. As far as the potential opponents to test him, Golovkin says Canelo is probably going to be the toughest because of his style. "Maybe Canelo [will be the toughest challenger for me]. He's young, new style, new situation," Golovkin said. Earlier today, the University of Southern California unveiled preliminary plans for the highly anticipated renovation of the Los Angeles Memorial Coliseum. The 93,607-seat stadium, built in 1923, is one of the country's most storied sporting venues, with a list of past and current tenants that includes multiple NFL teams, the Los Angeles Dodgers, and the USC and UCLA football programs. Most notably, the Coliseum played host to both the 1932 and 1984 Summer Olympic Games, and would serve a prominent role in Los Angeles' efforts to win the 2024 installation. According to an official website for the project, the planned renovations include: Replacing all seats and installing handrails throughout the stadium. New aisles, wider seats and increased leg room in several areas. A new structure on the south side of the stadium which would house suites, loge boxes, club seats a new concourse and a new press box. A restoration of the Coliseum's peristyle to more closely resemble its original design. Updating Wi-Fi accessibility throughout the stadium. Improving audio and video capabilities, including the addition of two large video screens at the east end of the stadium. Addition of new concession stands and improvements to existing stands. Upgrades to entry concourses. New field and stadium lighting. Replacing the Coliseum's electrical, mechanical and plumbing systems to meet current standards. The proposed improvements are budgeted at $270 million, and will be funded entirely by USC Athletics through donations, sponsorship revenue and rental income. Construction is expected to begin following the 2017 college football season and conclude in time for the 2019 home opener. More information will be released in Spring 2016. A new study published in the journal Molecular Psychiatry, reveals that consumers of cannabis are more prone to experiencing false memories. The study was conducted by researchers from the Human Neuropsychopharmacology group at the Biomedical Research Institute of Hospital de Sant Pau and from Universitat Autnoma de Barcelona, in collaboration with the Brain Cognition and Plasticity group of the Bellvitge Institute for Biomedical Research (IDIBELL -- University of Barcelona). One of the known consequences of consuming this drug is the memory problems it can cause. Chronic consumers show more difficulties than the general +worker=3 pack_row=1183 ntok=1024 reason=top_token_frac>=0.080(frac=0.097,count=99,token=.) text=in the 50s. This sitcom was a counter-myth to reality. Pop culture of the 50s was the people’s culture, an authentic representation of their time and place. Unlike a mass society, people enjoyed meaningful relationships. It’s who we were, and when that feeling of nostalgia overcomes us, it’s who we want to be again. Works Cited Cellania, Miss, Ivy Picklebottom, and Joseph Francis. “Happy Days.” Neatorama. N.p., n.d. Web. 22 Nov. 2016. Damon, Bill. “Who Performed Before Jimi Hendrix at Woodstock? The 50’s Nostalgia Group Sha Na Na!” BillDamon.com. N.p., 13 Nov. 2012. Web. 23 Nov. 2016. Dash, Mike. “Colonel Parker Managed Elvis’ Career But Was He a Killer on the Lamb? Career, but Was He a Killer on the Lam?” Smithsonian Magazine.com. Smithsonian, 24 Feb. 2012. Web. 22 Nov. 2016. Dwyer, Michael D. Introduction. Back to the Fifties. UK: Oxford UP, 2015. 2-4. Print. Gibson, Christine. “Elvis on the Ed Sullivan Show: The Real Story.” Elvis Presley Photos.com. N.p., n.d. Web. 21 Nov. 2016. “Happy Days (Series) – TV Tropes.” TV Tropes. N.p., n.d. Web. 23 Nov. 2016. Lewis, Lisa Ann. “- Happy Days.” The Museum of Broadcast Communications – Encyclopedia of Television – Happy Days. N.p., n.d. Web. 22 Nov. 2016. Pachence, John E. “Nostaglia of the 50s.” Personal interview. 14 Nov. 2016. John Pachence, Lecturer in Music Integrative Arts, Program Coordinator Performing Arts Penn State Abington History of Rock Rigsbee, Valerie. “Grease.” Broadway Musical Home – Grease. N.p., n.d. Web. 22 Nov. 2016. Shire, Avital. “Grease Synopsis.” Stage Agent. N.p., n.d. Web. 22 Nov. 2016. “Unknown.” Elvis Presley Biography. 2016 Elvis Presley Enterprises, n.d. Web. 21 Nov. 2016. What do you think? . The Bengals will hit the field for day one of training camp on Friday but a few players won't be suiting up. The Bengals placed three players on the Active/Physically Unable to Perform (PUP) list, due to injuries. These players are tight end Tyler Eifert, defensive tackle Brandon Thompson and wide receiver James Wright. This isn't surprising news for Eifert or Thompson but there was hope that Wright would be ready to practice by Friday. The Bengals also placed linebacker Rey Maualuga on the Active/Non-Football Injury list, due to an injury suffered outside the NFL. A player is placed on PUP to open training camp when they fail their physical to open summer work. Eifert injured his ankle in the Pro Bowl and his timetable for return is unclear, though it's hopeful that at the most, he'll miss our weeks of the regular season. It is possible that Eifert could return prior to the start of the season, but, we'll need to wait and see how long his recovery takes. Thompson suffered a torn ACL in Week 17 of the 2015 season. He was expected to open training camp on the PUP list (as he is) and could start the regular season on the PUP list, too. Wright injured his knee during the 2014 season and ended up needing microfracture surgery last August. He missed the entire 2015 offseason, which would have been his second year in the NFL. Wright was seen on the rehab field this spring in OTAs and there was hope that he'd be ready for the start of training camp. But, it appears that won't be the case. That's not great news as the Bengals would like to see what each of their receivers are capable of heading into training camp. Maualuga didn't practice in OTAs but did run some sprints around the field. There were reports that he showed up to spring workouts overweight, though, that isn't really an injury. Per the team, and the NFI designation, Maualuga's injury was suffered outside the NFL. It's worth noting Maualuga opened 2015 training camp on the N +worker=7 pack_row=1210 ntok=1024 reason=punct_run>7(count=25,text=.........................) text=SCRIBE TO THE BLOG for more awesome DIY ideas!] ......................... I have a confession to make. I like to collect baking tins.... Large ones, small ones, round ones, square ones, pastry ones. I like them all and I’ve built up quite the collection this past year. But here’s where it gets super weird. I don’t bake. I can’t bake. And that’s not to say I haven’t tried because I really have! There was that time I attempted to make a peach cake for my wedding anniversary and spent the majority of the evening trying to digest what felt like a rock. Or the time when I thought adding a cup of salt to my sponge cake mix would cancel out the extra cup of sugar I had added by mistake ..... I guess its true what they say...’one does not simply try baking’. And that ‘one really can scar ones husbands for life if one doesn’t stop trying to prove otherwise’. So at this point you’re probably thinking, if this chic isn’t using these tins to bake cakes, why on earth is she collecting them? Well, for repurposing reasons ...obviously. (CLICK HERE FOR ANOTHER BAKING TIN UPCYCLE IDEA) And because I just like baking tins – which we’ve kind of already established right? 10 MINUTE DIY CHALLENGE Its that time again! You know, where myself and 6 other bloggers get together to make something totally awesome in just 10 mins? Last month’s theme was all about organising and this months theme is planters! Can you guess what I did? I’ll just tell you, as this is kinda out there as far as ideas go. Inspired by this image on Pinterest, I took the largest baking tin from my collection and upcycled it into a herb planter for my kitchen. I’ll show you how! You can see what my other blogging friends made for this quick DIY challenge by scrolling right to the bottom of this post. MATERIAL USED TO MAKE THIS HERB PLANTER This post contains affiliate links for your convenience – please see full disclosure here HOW TO MAKE A BAKING TIN HERB PLANTER: 1. Place your baking tin on a hard surface and then your plastic sheet on top. 2. With your sharpie pen, draw around the baking tin (alternatively you can just flip the baking tin on to the plastic and draw an outline that way). Your final shape should resemble a semi circle. FYI – this is what the IKEA FISKBO fame looks like. 3. Cut the shape out with very sharp scissors. Try not to rush this part, or the plastic will crack! 4. Next apply a thin line of gorilla glue around the baking tin edges and stick your plastic semi circle over it. The glue takes about 20-30 sec seconds to dry (and a day to cure). Ensure you press the plastic down hard to get a really good seal – you don’t want water leaking out. 5. Add in stones and gravel to the base of your herb planter for water drainage (you can read more about indoor herb growing here if you are a beginner at this) Add a layer of potting soil and then plant your herbs! I chose parsley, rosemary and mint. They smell unbelievable in my kitchen! You can either lean your herb planter against the wall on your countertops or hang on the wall. I chose to hang it buy pre-drilling a small hole at the top centre and hammering into the wall with a heavy duty nail! What’s your verdict? Are you liking this repurposed baking tin idea? Since I started out with a confession, I feel it only right to end with a promise to repent my sins and change my weird baking tin fetish ways. In other words, no more late nights phone prowling..... err I mean scrolling eBay for baking pans to buy. When my ‘purchase thumb’ gets that uncontrollable urge to tap ‘BID’; I’ll just stick it in my mouth instead and revert back to my thumb sucking days (oops now that’s two confessions!) Make sure to check out all of the other ladies who are sharing #10MinuteDIYs! by Brittany G / Love Create Celebrate / Pocketful of Posies / D.N.A. Designs / Uncookie Cutter / Twelve on Main ......these other herb planter ideas....gotta say for someone who +worker=4 pack_row=1158 ntok=1024 reason=top_token_frac>=0.080(frac=0.093,count=95,token=) text=Francisco (UCSF) before joining the faculty at Case Western Reserve in June 2013. Individuals with ring chromosomes may display a variety of birth defects, but nearly all persons with ring chromosomes at least display short stature due to problems with cell division. A normal chromosome is linear, with its ends protected, but with ring chromosomes, the two ends of the chromosome fuse together, forming a circle. This fusion can be associated with large terminal deletions, a process where portions of the chromosome or DNA sequences are missing. These deletions can result in disabling genetic disorders if the genes in the deletion are necessary for normal cellular functions. The prospect for effective counter measures has evaded scientists—until now. The international research team discovered the potential for substituting the malfunctioning ring chromosome with an appropriately functioning one during reprogramming of patient cells into induced pluripotent stem cells (iPSCs). iPSC reprogramming is a technique that was developed by Shinya Yamanaka, MD, PhD, a co-corresponding author on the Nature paper. Yamanaka is a senior investigator at the UCSF-affiliated Gladstone Institutes, a professor of anatomy at UCSF, and the director of the Center for iPS Cell Research and Application (CiRA) at the Institute for Integrated Cell-Material Sciences (iCeMS) in Kyoto University. He won the Nobel Prize in Medicine in 2012 for developing the reprogramming technique. Marina Bershteyn, PhD, a postdoctoral fellow in the Wynshaw-Boris lab at UCSF, along with Yohei Hayashi, PhD, a postdoctoral fellow in the Yamanaka lab at the Gladstone Institutes, reprogrammed skin cells from three patients with abnormal brain development due to a rare disorder called Miller Dieker Syndrome, which results from large terminal deletions in one arm of chromosome 17. One patient had a ring chromosome 17 with the deletion and the other two patients had large terminal deletions in one of their chromosome 17, but not a ring. Additionally, each of these patients had one normal chromosome 17. The researchers observed that, after reprogramming, the ring chromosome 17 that had the deletion vanished entirely and was replaced by a duplicated copy of the normal chromosome 17. However, the terminal deletions in the other two patients remained after reprogramming. To make sure this phenomenon was not unique to ring chromosome 17, they reprogrammed cells from two different patients that each had ring chromosomes 13. These reprogrammed cells also lost the ring chromosome, and contained a duplicated copy of the normal chromosome 13. “It appears that ring chromosomes are lost during rapid and continuous cell divisions during reprogramming,” said Yamanaka. “The duplication of the normal chromosome then corrects for that lost chromosome.” “Ring loss and duplication of whole chromosomes occur with a certain frequency in stem cells,” explained Bershteyn. “When chromosome duplication compensates for the loss of the corresponding ring chromosome with a deletion, this provides a possible avenue to correct large-scale problems in a chromosome that have no chance of being corrected by any other means.” “It is likely that our findings apply to other ring chromosomes, since the loss of the ring chromosome occurred in cells reprogrammed from three different patients,” said Hayashi. “In theory, the way you could potentially correct a chromosome with deletions or duplications is to make a ring out of it and then get rid of the ring chromosome during reprogramming,” added Wynshaw-Boris. “Ring chromosomes are quite rare, but chromosome abnormalities are much more common and cause a variety of severe birth defects. So far, it is only possible to do this chromosome therapy for cells in culture, not in human beings. However, it may be useful to use this for tissue repair of birth defects and other abnormalities found in individuals with chromosomal abnormalities as techniques for regenerative medicine are developed in the future.” Other collaborators on the paper included Guillaume Desachy, M.Sc., Edward C. Hsi +worker=4 pack_row=1159 ntok=1024 reason=too_many_urls(count=3,max=2) text=ao, MD, Salma Sami, Kathryn M. J. Tsang, and Lauren A. Weiss, PhD, of UCSF; and Arnold R. Kriegstein, MD, PhD of the Eli and Edythe Broad Center of Regeneration Medicine and Stem Cell Research at UCSF. ### About Case Western Reserve University School of Medicine Founded in 1843, Case Western Reserve University School of Medicine is the largest medical research institution in Ohio and is among the nation’s top medical schools for research funding from the National Institutes of Health. The School of Medicine is recognized throughout the international medical community for outstanding achievements in teaching. The School’s innovative and pioneering Western Reserve2 curriculum interweaves four themes--research and scholarship, clinical mastery, leadership, and civic professionalism--to prepare students for the practice of evidence-based medicine in the rapidly changing health care environment of the 21st century. Nine Nobel Laureates have been affiliated with the School of Medicine. Annually, the School of Medicine trains more than 800 MD and MD/PhD students and ranks in the top 25 among U.S. research-oriented medical schools as designated by U.S. News & World Report’s “Guide to Graduate Education.” The School of Medicine’s primary affiliate is University Hospitals Case Medical Center and is additionally affiliated with MetroHealth Medical Center, the Louis Stokes Cleveland Department of Veterans Affairs Medical Center, and the Cleveland Clinic, with which it established the Cleveland Clinic Lerner College of Medicine of Case Western Reserve University in 2002. http://casemed.case.edu About UCSF UCSF is a leading university dedicated to promoting health worldwide through advanced biomedical research, graduate-level education in the life sciences and health professions, and excellence in patient care. It includes top-ranked graduate schools of dentistry, medicine, nursing and pharmacy, a graduate division with nationally renowned programs in basic biomedical, translational and population sciences, as well as a preeminent biomedical research enterprise and two top-ranked hospitals, UCSF Medical Center and UCSF Benioff Children’s Hospital. Will The Star Trek Sequel Be Titled Star Trek Into Darkness? By Eric Eisenberg Random Article Blend The news of the new title comes from a source over at Part of the reason why it's interesting that this news drops today is because tomorrow is the 46th anniversary of Gene Roddenberry's Star Trek (and there's even a Star Trek Into Darkness (if that's what it ends up being called) will feature returning stars Quinto, Chris Pine, Zoe Saldana, Karl Urban, John Cho, Bruce Greenwood, Simon Pegg, and Anton Yelchin and feature newcomers such as Benedict Cumberbatch, Alice Eve, Peter Weller and Noel Clarke. Alex Kurtzman, Roberto Orci, and Damon Lindelof wrote the script and the movie will be in theaters on May 17, 2013. So what do you think of the new title? Leave your thoughts and feelings, be they happy or disgruntled, in the comments section below. One of the most anticipated movies of next year may have found its title. After months of referring to J.J. Abrams' next film The Untitled Star Trek Sequel, it seems as though the official name of the project has been revealed and it is: Star Trek Into Darkness.The news of the new title comes from a source over at Coming Soon . While they haven't been able to officially confirm the information with Paramount Pictures, the studio behind the project, the site points out that both www.startrekintodarkness.com and www.startrekintodarknessmovie were recently registered on the site Markmonitor, which Paramount also used when they purchased domain names for G.I. Joe: Retaliation.Part of the reason why it's interesting that this news drops today is because tomorrow is the 46th anniversary of Gene Roddenberry's Star Trek (and there's even a Google Doodle to celebrate it). Quotes from Zachery Quinto about the project also surfaced online today, the actor calling the new film bigger and bolder than Abrams' reboot (you can read all of his comments here ).Star Trek Into Darkness (if that's what it ends up being called) will feature returning stars Quinto, Chris Pine, Zoe Saldana, Karl Urban, John Cho, Bruce Greenwood, Simon Pegg, and Anton Yelchin and feature newcomers such as Benedict Cumberbatch, Alice Eve, Peter Weller and Noel Clarke. Alex Kurtzman, Roberto Orc +worker=11 pack_row=1220 ntok=1024 reason=punct_run>7(count=9,text=.........) text=ka’s Beef stroganoff. Of course, I got the special Cheburashaka set which came with Cheburashka’s beloved orange juice. I got a special coaster when I ordered the Cheburashka set. Then my juice came. Since it was Cheburashka’s orange juice it had a unique flavour, different from normal orange juice. Then at last my Beef Straganoff came! Cheburashka had been drawn on the pancakes! I don’t normally eat pancakes but I really wanted to eat these ones. ....hm? .....hmmm? Who......!?!?!? Then I put butter and maple syrup on them. I also put it on the unknown characters one then it became even more unrecognizable. It was weird to have such sweet pancakes with beef but I’ll forgive it because it’s Cheburashka. Satisfied, I paid for my meal. There was a Cheburashka at the cash register too. When I paid I got a Cheburashka film coupon. It said that you could exchange it for a Cheburashka film at kiddy land. Kiddy land was close to the pancake shop so while gazing excitedly at the coupon I headed there. But then something unbelievable happened! I noticed that the coupon said that the kiddy land where you could get the film was the one in Umeda, Osaka! It was too far to go to Umeda from Harajuku, and I had a photo shoot the next day so I’d have to return the same day, but no matter I went to the Harajuku store. Where they kindly exchanged the coupon for me anyway. I was really worried so felt very relieved. The films were given out randomly and I couldn’t choose which one I got so I looked at it excitedly wondering which one it would be. Who.........???? Let’s say you want to go to Paris on vacation and you find a really inexpensive airfare online. But the flight leaves out of LAX, not Lindbergh Field in San Diego. Given the notorious traffic conditions on I-5 — not to mention the hassle and high price of parking your car during your trip at the airport parking lot — chances are, you would quickly toss that idea out the window. But let’s say a ridesharing service could pick you up from your neighborhood Starbucks and drop you off at or near LAX for about $50, maybe less. And you would make the trip while riding in a Tesla. Then you might just say, “Bienvenue à Paris.” An example like that fits precisely into the business strategy of Tesloop, a 2-year-old startup based in Culver City, that ferries passengers to and from locations in greater Los Angeles, Orange County and Palm Springs. Last month, the company added San Diego to its SoCal loop. “San Diego is a huge market for people traveling between L.A. and San Diego,” said Rahul Sonnad, Tesloop’s CEO and one of its co-founders. “We think it’s about 48,000 people each day, each direction. “When you look at the current transportation options, driving yourself is a challenge. It’s stop and go, it takes a long time, it’s tiring ... so we think San Diego is really a great market — the right distance where you can more effectively travel by electric car.” All the cars in the company’s fleet are all-electric Teslas — hence the name Tesloop — but Elon Musk's signature brand has no connection to the startup. Sonnad said the people running Tesla have never complained about the similarities in companies’ names. “I would guess they had some discussions but they decided it wasn’t infringement,” Sonnad said. “We’re actually in a different category of business than them. We’re in transportation; they’re in car-making ... Early on we told them if they had a problem we would change our name and they didn’t request we do so.” Tesloop bills itself as the future of mass transit, like an airline or train system but in a smaller and more customer-friendly scale, serving routes up to 250 miles, which corresponds to the range a Tesla can predictably go on a full charge. The company also emphasizes its green credentials, pointing out traveling in all-electric vehicles does not emit greenhouse gases into the atmosphere. So how does Tesloop work? Riders go to the company’s website and, just like booking a flight, browse Tesloop’s departure times and estimated +worker=3 pack_row=1222 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=the merger of two gun makers, Izhmash and Izhevsk Mechanical Plant. It is one of the foremost arms manufacturers in Russia. Photo: Enterprise “Concern Kalashnikov” in Izhevsk, Russia Sergey Guneev / Sputnik Source: RT A group of student bioprospectors from Yale has struck environmental gold in the jungles of Ecuador. The students, through the annual Rainforest Expedition and Laboratory course taught by molecular biochemistry professor Scott Strobel, have discovered a fungus with a powerful appetite for polyurethane. That common plastic often winds up buried in landfills, where it can remain, largely unaltered, for generations. In the September issue of Applied and Environmental Microbiology, Jonathan Russell ’11 and his colleagues describe how they isolated, from plants collected during the class’s two-week spring trips, a fungus they identified as Pestalotiopsis microspora—and then discovered its unique polyurethane-digesting talents. “Many microbes can do cool tricks, like degrading pollutants,” says Russell, who is beginning a doctoral program in biology at Harvard. On his list for the trip were plants producing latexes and other resins; they can harbor fungi or bacteria that may make a living off the natural plastic-like materials. The plants were identified in the field by botanist Percy Nez, a professor at the National University of San Antonio Abad in Cusco, Peru. At Yale, Pria Anand ’10, an alumna of the course, isolated P. microspora samples and showed that they could do something no one had seen: live and prosper on a steady diet of polyurethane alone. Most intriguing, the fungus is believed to do this even under the oxygen-free conditions that would prevail at the bottom of a landfill. Russell has isolated an enzyme the fungi use to accomplish the degradation, and it’s possible that this molecule alone could be useful in eliminating polyurethane. Two weeks after the opening of a new bus-only lane through Hamilton's core, downtown merchants say their worst fears have been realized. Business operators have expressed a fear throughout the transit experiment that making it tougher for cars to navigate the core will keep people out of their stores — and that's what they fear is starting to happen. Barry Sobel, whose Rainbow Bridal has been a King Street fixture for 36 years, said he is already hearing from longtime customers that traffic congestion resulting from the bus lane is keeping them out of the core, especially on weekdays. "Saturday isn't so bad, traffic is moving well, but at 11 a.m. on a weekday cars will be backed up all the way to Wellington," Sobel said in an interview Saturday. "During weekdays, traffic is backed up as far as I can see." Late in October the city launched a one-year pilot project to test the effect on traffic congestion in the core from converting one lane of King to transit-only. The far right lane of King between Mary and Dundurn streets is now buses-only except for cars trying to turn right. The experiment is being viewed as a test of the impact of a proposed light rapid transit rail line through the area. Provincial transit agency Metrolinx has put $300,000 into the project. Backers of the plan say it has the potential to increase business for core-area merchants by slowing traffic, giving drivers a chance to look around and maybe discover a downtown shop they didn't know existed. "It gives people a chance to see that dress in the window or that guitar in the pawnshop," said downtown Councillor Jason Farr. "This plan was well thought out but it's also a pilot project and we know that means it will have to be tweaked a little." Sobel, however, wonders how potential customers are going to see the perfect wedding dress in his window if they drive Hunter or Cannon streets to avoid congestion in the core. That also worries pawnbroker Troy Thompson, who operates G.W. Thompson Jeweller and Pawnbrokers with his father, Gord. This past weekend, a chocolate Labrador retriever named "Trigger" accidentally shot an Indiana woman in the foot during during a hunting trip, according to news reports. An Indiana woman had left her loaded shotgun on the ground with the safety off. Trigger stepped on it, inadvertently pressing the trigger. +worker=3 pack_row=1237 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=“Close friends and regular customers tell me that they are scared of coming to Itaewon because of foreigners,” he said. To date, none of the MERS related deaths in Korea have been foreigners and there has been no reports of foreigners contracting the virus. Kim said he had to take the drastic measure because the number of customers dwindled following the outbreak of MERS. “The number of customers has dropped by 50 percent. We are now in a very desperate situation,” Kim said. He argued that the club’s manager Lee Su-bin failed to mention MERS when he conducted an interview with The Korea Observer earlier this week for the article, “Club in Itaewon denies entry to foreigners, especially those from Middle East.” John Power, who was denied entry to Lounge & Move Club last Saturday, said MERS was not mentioned when the bouncer rejected his entry. The Irish journalist said that the only explanation he was offered was that foreigners are not allowed. John denied the offer to rebut the club owner’s explanation. “The ignorance speaks for itself,” he said. Club Move’s general manager Lee Su-bin told The Korea Observer Tuesday that the club, located in the tourist district of Itaewon, has denied entry of foreigners since late last year because some irresponsible foreigners had caused serious damage to the club and sexually harassed patrons. Kim also thinks that foreigners were doing rather more harm than good to his establishment. “The biggest reason that we deny service to foreigners is MERS but you cannot rule out the fact that they are troublesome,” he said. “Most of the time when a customer loses a cellphone, the CCTV reveals that the thieves are Middle Eastern people or foreigners.” Kim agreed with his manager Lee’s statement that the club has been hesitant to have foreign customers because it is hard to make them liable when they cause property damages, sexually harass customers or start a brawl. He also stressed that foreign customers frequently start a fight with U.S. servicemen. “U.S. servicemen don’t behave badly. The problem is other foreign customers who constantly provoke them into a fight,” Kim said. “It is better not to have them because we lose too much for trying to make a small amount of money from them.” Kim said he will keep the no “foreigner policy” until fears over MERS subside but some foreigners, including his DJs, will be allowed to enter. “If anyone catches MERS at our club, we have to close the club. It will be a huge loss to us if we have to shut it down because of accepting a few [foreigners],” he said. “However, our DJs are foreigners and we cannot stop them and their friends. We will continue to allow some foreigners who our staff have made acquaintances.“ The club received numerous messages via their Facebook page with a couple posting comments on the wall. “Why do you advertise foreign women if foreigners are forbidden to enter your club?!! That is so hypocritical of you!” said one commenter. “RACIST!! wonder how u sleep at night! truly disgusting,” said another. Lounge & Move Club use images of bikini clad Western women in a poster advertising the club without those models consent or knowledge. Several readers have pointed out the hypocrisy of advertising using a race that they then deny entry to. In August last year, JR Pub in Itaewon received criticism for denying Africans over fears of Ebola. The bar put a pair of signs that read “We apologize But, Due to Ebola Virus we are not accepting Africans at the moment.” The bar owner immediately removed the signs and made an apology over the discriminatory policy, saying it was wrong for him to discriminate people based on race. It appeared to be just a regular innocent looking punt by Seattle that got blocked by Buffalo, but after a closer look, was it so innocent? Seattle punter Jon Ryan grasped the football and got himself ready to boot it right into the hands of Buffalo's rush: We you @Iam_jerryhughes! The @TCUFootball legend blocking the punt for the @buffalobills on Monday Night Football! pic.twitter.com/Q54HtH79c9 — Mark Cohen (@TCUCohen) November 8, 2016 After closer look of Ryan grasping the football, it appears to be a little deflated. Footballs that are 12.5 PS +worker=8 pack_row=1202 ntok=1024 reason=too_many_urls(count=3,max=2) text=thread in the Steam discussion boards.Much love from Croteam! Buy Photo Judge Leticia Astacio is taken from judges chambers in handcuffs as her lawyer Edward Fiandach follows her. FROM MAX: This photo generated 209 comments and 153 shares on the Democrat and Chronicle Facebook page. The photo struck a chord with our readers on many levels. For me the contrasting looks on Judge Astacio and her lawyer, Edward Fiandach, spoke volumes. (Photo: MAX SCHULTE/@maxrocphoto/staff photographer)Buy Photo Local court officials are exploring administrative sanctions against embattled Rochester City Court Judge Leticia Astacio after she stopped reporting to work three weeks ago. State Supreme Court Justice Craig Doran, who oversees the courts that make up the state's Seventh Judicial District, said her prolonged absence from the courthouse may constitute a voluntary abandonment of her elected office. Astacio has not presided over a case in over a year, after being stripped of her judicial duties and barred from non-public areas of the courthouse by Doran and her direct supervisor,City Court Judge Teresa Johnson. But under an agreement struck between the three in June, Astacio was to report to the Hall of Justice law library from 9 a.m. to 5 p.m. each day court was in session to conduct research and perform other administrative tasks. The agreement was ostensibly an effort by Astacio's supervisors to help her reclaim her judicial duties. But it also served to assuage widespread public anger over the fact that Astacio had been collecting her judicial salary of $173,400 for doing no work at all. In an interview Thursday, Doran said Astacio had been reporting to the library regularly until Aug. 31, when she stopped showing up altogether. Her lawyer, Mark Young, told WROC-TV (Channel 8) that Astacio has stayed away from the courthouse on the recommendation of her doctor. Young reportedly said Astacio submitted a note from her physician to her supervisors that cited health reasons for her extended absence. Astacio was convicted of misdemeanor DWI in August 2016 and sentenced to a one-year conditional discharge that, among other things, required her to abstain from alcohol. She has since been found guilty of running afoul of her sentence on several occasions, however, and was ordered jailed for 60 days in the spring and placed on three years of probation. NEWSLETTERS Get the ROC60 newsletter delivered to your inbox We're sorry, but something went wrong Rochester in 60 seconds: Get all the news you need to know in less than a minute. Please try again soon, or contact Customer Service at 1-800-790-9565. Delivery: Invalid email address Thank you! You're almost signed up for ROC60 Keep an eye out for an email to confirm your newsletter registration. More newsletters Astacio currently stands accused of violating her probation in the days after she was released from jail in July. A hearing on the charges has been postponed twice and is now slated for Oct. 19. Astacio was elected to a 10-year term in 2014. DANDREATTA@GANNETT.COM Read or Share this story: http://on.rocne.ws/2ygkDxw Superwins.EU is a new online poker room sharing the same liquidity as Lock Poker. Lock left Revolution Gaming amid acrimony last October. Until now it has been the sole site on the network. Players posting on poker community forum 2+2 are suspicious that the new skin is not independent of Lock. The branding of the new site is similar to that used by Lock Poker, and poster “dougmanct” dug into the internet details to produce evidence that the two sites appear to be linked. He found that the Superwins terms and conditions identify Stacktrace N.V. as the company with whom the agreement is being made. The Curacao regulatory notice for Stacktrace shows that it has licenses to operate www.lockpoker.eu, www.lockcasino.eu. Furthermore, “The server at superwins.eu has a service running that uses a SSL certificate registered to lockpoker.eu,” according to the poster. Poster “Yur Daddy” released a copy of his chatlog with Lock rep “Quinn” in which Quinn stated that the new site “is not related to Lock but is on the same global platform as [Lock +worker=5 pack_row=1286 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=the 20s by spring of 2018. The Russia scandal isn’t the biggest issue for voters in the midterm election, but it is a wrecking ball that is destroying the Trump presidency. If you’re ready to read more from the unbossed and unbought Politicus team, sign up for our newsletter here! Email address: Leave this field empty if you're human: A witness photo of a gun at the feet of Keith Lamont Scott following his fatal altercation with police officers has been confirmed by authorities to be authentic. Whether or not Scott was armed has been a major issue of contention between local NAACP, religious leaders, rioters and city officials. Authorities who have seen the video and images said unequivocally that Scott was armed during the incident, but opponents wanted proof. This image provides that proof. The image was obtained by NBC Charlotte and confirmed by police. The main question that remains is whether or not the proof, the facts, will matter to those set on rioting in Charlotte tonight. 2016 Bright Mountain Media, Inc. All rights reserved. The content of this webpage may not be reproduced or used in any manner whatsoever without the express written consent of Bright Mountain Media, Inc. which may be contacted at info@brightmountainmedia.com, ticker BMTM. We want to make Firefox load pages as fast as possible, to make sure that you can get all the goods from the loaded pages available as soon as possible on your screen. The JavaScript Startup Bytecode Cache (JSBC) is an optimization made to improve the time to fully load a page. As with many optimizations, this is a trade-off between speed and memory. In exchange for faster page-load, we store extra data in a cache. The Context When Firefox loads a web page, it is likely that this web page will need to run some JavaScript code. This code is transferred to the browser from the network, from the network cache, or from a service worker. JavaScript is a general purpose programming language that is used to improve web pages. It makes them more interactive, it can request dynamically loaded content, and it can improve the way web pages are programmed with libraries. JavaScript libraries are collections of code that are quite wide in terms of scope and usage. Most of the code of these libraries is not used (70%) while the web page is starting up. The web page’s startup lasts beyond the first paint, it goes beyond the point when all resources are loaded, and can even last a few seconds longer after the page feels ready to be used. When all the bytes of one JavaScript source are received we run a syntax parser. The goal of the syntax parser is to raise JavaScript syntax errors as soon as possible. If the source is large enough, it is syntax parsed on a different thread to avoid blocking the rest of the web page. As soon as we know that there are no syntax errors, we can start the execution by doing a full parse of the executed functions to generate bytecode. The bytecode is a format that simplifies the execution of the JavaScript code by an interpreter, and then by the Just-In-Time compilers (JITs). The bytecode is much larger than the source code, so Firefox only generates the bytecode of executed functions. The Design The JSBC aims at improving the startup of web pages by saving the bytecode of used functions in the network cache. Saving the bytecode in the cache removes the need for the syntax-parser and replaces the full parser with a decoder. A decoder has the advantages of being smaller and faster than a parser. Therefore, when the cache is present and valid, we can run less code and use less memory to get the result of the full parser. Having a bytecode cache however causes two problems. The first problem concerns the cache. As JavaScript can be updated on the server, we have to ensure that the bytecode is up to date with the current source code. The second problem concerns the serialization and deserialization of JavaScript. As we have to render a page at the same time, we have to ensure that we never block the main loop used to render web pages. Alternate Data Type While designing the JSBC, it became clear that we should not re-implement a cache. At first sight a cache sounds like something that maps a URL to a set of bytes. In reality, due to invalidation rules, disk space, the mirroring of the disk in RAM, and user actions, handling a cache can become a +worker=6 pack_row=1421 ntok=1024 reason=top_token_frac>=0.080(frac=0.083,count=85,token=) text=Rank Trending Last Player Comment 1 N/A Harry Shipp The much-talked about prospect out of Notre Dame is one of the leading lights of a new generation of young, small playmakers coming out of MLS academies, including the likes of fellow rookies Tommy Thompson and Raul Mendiola. After watching the Fire's season opener from the stands, Shipp has jumped out ahead of his rookie counterparts and become Chicago's top chance-creator thanks to his strong set piece delivery and ability to create from a variety of spots on the field. Last Month: 3/9 at Chivas USA (3-2 loss, DNP - coach's decision), 3/16 at Portland (1-1 tie, 90 min), 3/23 vs. New York (1-1 tie, 66 min, 1 A), 3/29 at DC (2-2 tie, 90 min, 1 A) 3/9 at Chivas USA (3-2 loss, DNP - coach's decision), 3/16 at Portland (1-1 tie, 90 min), 3/23 vs. New York (1-1 tie, 66 min, 1 A), 3/29 at DC (2-2 tie, 90 min, 1 A) This Month: Saturday vs. Philadelphia (5 pm ET; MLS LIVE ), 4/12 at Montreal, 4/19 vs. New England Saturday vs. Philadelphia (5 pm ET; ), 4/12 at Montreal, 4/19 vs. New England Season Statistics: 2 A (3 GP, 3 GS) 2 A (3 GP, 3 GS) MLS Fantasy Soccer Manager: 19 points, $5.8 million (8.1 percent owned) 2 N/A Thomas McNamara A surprise starter on opening day, the versatile McNamara scored on his debut with a strong finish and has looked the part since. If you need to give him a natural position, it's probably attacking midfielder, but through three games he's featured there, at forward, and further back in central midfield, and has proved equally suitable in each role. Last Month: 3/9 vs. Chicago (3-2 win, 79 min, 1 G), 3/16 vs. Vancouver (1-1 tie, 80 min), 3/22 at Dallas (3-1 loss, 90 min), 3/30 at New York (1-1 tie, 87 min) 3/9 vs. Chicago (3-2 win, 79 min, 1 G), 3/16 vs. Vancouver (1-1 tie, 80 min), 3/22 at Dallas (3-1 loss, 90 min), 3/30 at New York (1-1 tie, 87 min) This Month: Sunday vs. LA Galaxy (3 pm ET; UniMas), 4/12 at Portland, 4/19 vs. Seattle, 4/26 at San Jose Sunday vs. LA Galaxy (3 pm ET; UniMas), 4/12 at Portland, 4/19 vs. Seattle, 4/26 at San Jose Season Statistics: 1 G (4 GP, 4 GS) 1 G (4 GP, 4 GS) MLS Fantasy Soccer Manager: 17 points, $4.9 million (20.5 percent owned) 3 N/A John Berner What are the odds? A year after Clint Irwin burst on to the scene as a rookie goalkeeper for the Colorado Rapids, Berner has done the same in Irwin's injury-forced absence. The highlight of his month was a three-save shutout performance in the Rapids first win of 2014, against Portland. He will, however, be feeling the pressure from a now-healthy Irwin, who recently inked a new deal, after getting beat at the near post on Dom Dwyer's winner in the Rapids' 3-2 loss to Sporting. Last Month: 3/15 at New York (1-1 tie, 90 min, 1 SV), 3/22 vs. POR (2-0 win, 90 min, 3 SV), 3/29 vs. Sporting KC (3-2 loss, 90 min, 1 SV) 3/15 at New York (1-1 tie, 90 min, 1 SV), 3/22 vs. POR (2-0 win, 90 min, 3 SV), 3/29 vs. Sporting KC (3-2 loss, 90 min, 1 SV) This Month: Saturday at Vancouver (6:30 pm ET, MLS LIVE ), 4/12 at Toronto, 4/19 vs. San Jose, 4/26 at Seattle Saturday at Vancouver (6:30 pm ET, ), 4/12 at Toronto, 4/19 vs. San Jose, 4/26 at Seattle Season Statistics: 5 SV, 1.67 GAA (3 GP +worker=15 pack_row=1387 ntok=1024 reason=punct_run>7(count=46,text=..............................................) text=and feel themselves subdued. – Sura 9:29“Prophet,and the hypocrites, and deal harshly with them. Hell shall be their home: an evil fate.” – Sura 9:73 (in his G20 speech, Obama saying, “We don’t feed that kind of notion that somehow Christians and Muslims are at war.”!)So when you meet those who became infidels, so strike off their heads until you have made a great slaughter among them. – Sura 47:4 (Hmm, hasever done this??)Etc, etc., etc, etc, ..............................................Around 2:15 minutes he glowingly speaks of “civilization’s debt to Islam”.Civilization’s debt to Islam!? How about a 1400-year track record of military conquest, bringing countries under submission to Allah, that began with the pattern set by the life of their ‘prophet’ Muhammad, the perfect Muslim to be emulated.Around 8:56 minutes, Obama declares that “America is not and never will be at war with Islam”. Right! America is at war with man-made global warming, er, sorry, climate change. The latest developments left one major question: Will prosecutors bring charges against Tanaka's boss, former Sheriff Lee Baca, who led the department for more than 15 years before stepping down last year? Acting U.S. Atty. Stephanie Yonekura declined to comment on that possibility. The former sheriff has denied any wrongdoing and previously said federal officials assured him that he is not a target. In sketching out the case against Tanaka and Carey, prosecutors accused them of directing a group of deputies who were convicted last year of carrying out the plot to impede the FBI investigation. "This new case illustrates the fact that the leaders who foster and hide the corrupt culture of their organization will be held responsible, just like their subordinates," Yonekura said An attorney for Tanaka, H. Dean Steward, called the charges "baseless" and vowed that Tanaka would "aggressively defend" himself in court. "At all times, Mr. Tanaka dedicated himself to serving the residents of Los Angeles County honorably, ethically and legally," Steward said. "After all the facts come to light, we are confident he will be exonerated of any wrongdoing." Tanaka — who is in his third term as mayor of Gardena and unsuccessfully ran for sheriff last year — and Carey pleaded not guilty at their arraignments Thursday and were released on bail. Carey also faces charges of giving false testimony last year during obstruction trials for some of the deputies. His attorney declined comment. Tanaka plans to request a leave of absence from his mayoral duties, Gardena's city manager said. The image of Tanaka standing before a judge marked a decisive new chapter in the sweeping federal investigation into the jail facilities run by the Sheriff's Department. After winning convictions against the lower-ranking deputies, investigators tried to link top officials to the misconduct. Several other deputies are awaiting federal civil rights trials on charges that they beat inmates and visitors to the jails. The case against Tanaka and Carey centers on events in August and September 2011, when, according to the indictment, the pair instructed several deputies to keep close tabs on Brown, the FBI's inmate informant. On Aug. 19, Tanaka and Carey met with some of the deputies to hear what information they had extracted from Brown about the scope of the FBI inquiry, the indictment alleges. The indictment does not name Brown, but refers to him by the initials AB. The following day, prosecutors allege that the same group met again to discuss the fact that a cellphone deputies had confiscated from Brown belonged to the FBI and had been used in a sting operation against a deputy who smuggled it into the jail to Brown. Days later, Tanaka gathered in a parking lot with deputies who had gone undercover to pose as Brown's cellmates in an attempt to glean information about the FBI's investigation. Tanaka and Carey also went to great lengths to keep FBI agents from speaking with Brown, the indictment alleges. In one display of gamesmanship, Tanaka directed underlings to draft a new department policy that required FBI agents to receive approval from him before interviewing any jail inmate, the indictment said. (Tanaka later had his name removed +worker=6 pack_row=1441 ntok=1024 reason=too_many_urls(count=3,max=2) text=s Santos has said they will build on the point earned heading into their home opener April 18th vs Minnesota United. Man Of The Match Romuald Peiser Pesier had a fantastic game and came but big several times for Ottawa. His skill and reflexes certainly helped Fury earn a point on the day, and his confidence and composure at the back is important for the Fury squad. Honorable Mentions Nicki Paterson had a great game, scoring a goal and clearing a chance off the line and fitting in well in the holding midfield position. A light-colored female Formosan termite, left, exhibiting mating behavior with the darker male Asian termite in Florida. (Photo: AP) Last month, Peyton McCaughey's family called in fumigators to deal with the humdrum problem of termites. Today, the 10-year-old boy has lost 90% of his motor skills, and state investigators in Florida say it's because of the chemicals used in the fumigation, reports NBC News. The boy's parents this week sued Terminix and a subcontractor named Sunland, alleging shoddy practices, reports TCPalm. Peyton "sustained a catastrophic brain injury" because the fumigators "failed to properly make certain" that the home was safe for the family to re-enter, according to the complaint. The boy, his sister, his parents, and his grandmother all quickly became sick, but Peyton was the worst with slurred speech and muscle spasms. Everyone else recovered, but today Peyton can't walk or "even lift his head," says a family spokesman. The state Department of Agriculture and Consumer Services Communications has suspended Sunland's pest-control license as the investigation continues. Investigators found that devices Sunland should have used to test the home for safety were not working properly, reports WPTV. The state also says that Sunland didn't participate in a training program required for the particular chemical used in the fumigation. Terminix says its "heart goes out to the family" but wouldn't comment further because of the pending lawsuit. Peyton's prospects for recovery are unclear, but he currently requires constant care. "It's hopeful and encouraging that he has made some improvement but he's nowhere near the kid that he used to be," says his uncle, Ed Gribben. (Pesticides also sickened a family vacationing in the Virgin Islands.) This article originally appeared on Newser: More from Newser: Newser is a USA TODAY content partner providing general news, commentary and coverage from around the Web. Its content is produced independently of USA TODAY. Read or Share this story: http://usat.ly/1F8fWbw Question about the CPU and the CPU fan by Shihab Is this CPU and the CPU fan brand new? and If I find scratches on the cpu fan will I get a replacement? Answer by matthewh on Sunday, April 10, 2016 Hello Shihab, Yes this processor is brand new. You're unlikely to find scratches on a processor as they are manufactured in highly strict laboratory conditions, however if you were to find a scratched processor you will have 28 days to return it to us for either a replacement or full refund. More details on our T&C's can be found here; https://www.aria.co.uk/Support/Returns+Policy ddr4 by jack Can i use ddr4 ram with this Response by shaund Hi Jack, This CPU or the motheboards that support this CPU are not compatible with DDR4. Graphics card by Harry I am looking to buy the i5-4690K and the GTX 980 TI, would the I5 be good enough for the graphics card or would it be better to upgrade to a I7 Processor. Answer by shaund on Monday, December 28, 2015 Hi Harry, If you are planning on doing 4k gaming with your 980ti I would definitely recommend going for the i7 or you may find yourself bottlenecked, if you are sticking with 1080p then this CPU would be absolutely fine for that. Is the amd 8350 good for gaming by Bob Is the amd 8350 good for gaming and also what fps am I looking at with a Msi gtx 970. I would like to play games such as the witcher 3, gta 5, minecraft and other games like that. Thankyou Answer +worker=3 pack_row=1449 ntok=1024 reason=punct_run>7(count=8,text=........) text=hackers do”. In the past one could just remove the accessibility or bluetooth icons from the panel by not starting them, now one needs to write extensions for that purpose. One even needs an extension to move the clock. But wait: Is GNOME 3 designed for people who know how to write extensions? If you think that GNOME is still a nice desktop after all and should not become too simplistic, please support my RFE by adding your two cents. Too bad voting in GNOME’s bugzilla is disabled. Transwoman denied access to women's restroom at Las Vegas resort Copyright 2019 Nexstar Broadcasting, Inc. All rights reserved. This material may not be published, broadcast, rewritten, or redistributed. Video LAS VEGAS - A transgender woman is speaking out after claiming she was not allowed to use a women’s restroom at a casino on the Strip. Kaite Charm, who is from San Francisco, was attending a Cirque du Soleil show inside New York, New York a few days ago when the incident happened. She says someone complained when she tried using the bathroom. When she tried going to the bathroom a second time, she was confronted by security. “Four security people were making a line blocking the hallway, and I'm just like what's going on?” Charm said. Katie Charm says she started transitioning about seven months ago after spending 13 years in the military. After she attempted to explain her gender-identity, Charm says she asked to speak to a manager, but it didn't help. That's when she started recording the confrontation. “What about sexual-identity discrimination, gender?” Charm asked in the recording. “This is private property. I can ask you to leave for any reason, at any particular time,” the manager responded. At one point, a staff member can be heard asking her for her identification. After not coming to an agreement, Charm decided to leave and asked for a refund. “The last thing he said to me is 'why would we give you a refund because you have a problem with our establishment?’” Charm said. MGM Resorts International says it allows visitors to use restrooms consistent with their gender identity. The resort released a statement which reads in part, “MGM Resorts strives to create a safe and inclusive environment for our LGBTQ guests. This incident is of deep concern to us and we continue to investigate.” A spokesperson says they've reached out to Charm and have apologized. She's not ready to accept their apology and says she hopes it doesn't happen again to anyone else. “What's going to make things better? Truly better for the next transwoman or transman that wants to come to Vegas?” Charm said. Charm was in the Air Force for 13 years. Last year, Metro proclaimed that every lane is a bike lane, to the applause of many in the bicycling community. Unfortunately, they seem to have forgotten to tell some of their drivers. In an all too common complaint, Twitter user topomodesto posted video of a close pass and brake check by a Metro bus driver apparently attempting to punish him for riding exactly where he was supposed to in the middle of the lane. Personally, I had no idea bus drivers had been deputized to enforce their own mistaken interpretation of the law. Or that at least some seem incapable of remembering the message that was proudly plastered on the backs of their buses such a short time back. Topomodesto reports he’s filed a complaint over the incident. But also notes that he and other riders have never heard back after filing similar complaints in the past, so he has no idea how seriously Metro takes them. Unfortunately, no one outside of Metro does. Complaints against drivers are considered personnel matters, so no one other than the driver and his or her supervisors are ever told the resolution of the matter. Or if it was ever resolved, period. Short of filing legal action — and this would appear to be a perfect test case for the city’s bicyclist anti-harassment ordinance — there seems to be no way to find out. Which really needs to change. Because we have a right to know if something, anything, was done in response to a deliberately threatening driver. Even if they don’t actually identify the driver. And Metro’s well-intentioned attempts to promote bike riding will be meaningless if we have to ride in fear of self-appointed vigilante bus jockeys. ........ Before you ride to Thursday’s public forum on the North Figueroa road diet and bike lanes with the B +worker=3 pack_row=1450 ntok=1024 reason=punct_run>7(count=8,text=........) text=ike Oven and the Eastside Bike club, catch up on LADOT’s presentation on the subject from last month’s community meeting. Meanwhile, it turns out the LA Fire Department did not determine that the North Fig bike lanes would slow response times, despite what a fire captain suggested last month. In fact, it wasn’t even studied by the department. So why did he imply it was — and would? ........ Local The LAPD is looking for bike riders to start a volunteer bicycle patrol team in the northwest San Fernando Valley. A West San Fernando Valley website looks at last weekend’s COLT ride. KPCC’s annual Olympic Day considers the rise of bicycling on June 23rd; free, but RSVP required. Despite what this story says, Santa Monica is already designated as a Bike Friendly Community, but they’re trying to certify more Bicycle Friendly Businesses. State A reporter for Marketplace completes the AIDS Lifecycle Ride. Good for them. The family of fallen cyclist Paul Lin is suing Newport Beach, alleging that a dangerous intersection at San Joaquin Hills Road and Marguerite Ave was responsible for his death. Evidently, it’s not just LA. The Voice of San Diego looks at that city’s hit-and-run epidemic. A Bay Area bike safety instructor is recovering after being rear-ended by a distracted driver. Sacramento police nail a butt ugly bike thief with a bait bike. National The bike industry wants tariffs reduced on imported bicycles since bikes have a positive effect on the environment. A Massachusetts cyclist luckily lands in the back seat of a convertible after being hit by the turning car. Bike shops may be collateral damage to the popularity of New York’s Citi Bike program, even though the opposite appears to be true in DC. Unbelievable. A new three-foot passing law is approved in West Virginia, which also requires motorists to give an audible signal when passing a rider. Yes, they want every driver who passes a bike to honk or shout, which is about the most distracting and dangerous thing they could do. Velonews says loyal Lance lieutenant George Hincapie’s new book rationalizes his doping choices; I’ve often wondered why the still popular rider seems to get a free pass on the subject. The price of that $20 cardboard bike rose to $295 before dropping to $95 plus shipping, then nothing as the business collapsed. International Caught on video: A London cyclist is searching for the rider who crashed into him in a bike-on-bike hit-and-run. A tragic reminder that bike-on-ped collisions are dangerous for both parties, as a UK scientist is killed when her bike collides with a pedestrian. One third of all Czech cyclists blamed for traffic collisions had been drinking; no word on how that compares to the rate of drunk driving collisions in the country. Finally... An Indiana cyclist is doored. By a porta-potty. Here’s the latest bike-themed music video. And no. Just... no. Share this: Facebook Twitter More Tumblr Pinterest Reddit Email DJ Premier says that he and Nas will be working on a long-discussed album together soon. “It’s coming,” DJ Premier says during an interview posted by Phenom Blak. “I just saw him last week. It’s coming. He has another project to drop on Def Jam, then he’s a free agent. Let him get that out. It’ll give me time to get my artists ripped and ready. Then we can all tour together or something.” DJ Premier and Nas have worked together throughout Nas’ career, including the rapper’s acclaimed debut album, 1994’s Illmatic. DJ Premier produced three of the collections 10 songs, “N.Y. State Of Mind, “ “Memory Lane (Sittin’ In Da Park)” and “Represent.” The only guest rapper on Illmatic was AZ, who appeared on “Life’s A Bitch.” DJ Premier said that he didn’t know whether or not AZ would appear on his forthcoming album with Nas. “Nas is in charge,” says DJ Premier, who has been discussing doing an album with Nas since at least 2006. “I’m just the producer.” In addition to his work as one-half of Gang Starr, DJ Premier has also produced for a number of other artists, including Nas, Jay Z and The Notorious B.I.G.. DJ Premier says that he tries to tailor his production to the artist with whom he is collaborating, especially +worker=10 pack_row=1449 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=s that simple. State governments could not create a central authority with any degree of power unless they held that power in at least an equal degree prior to the latter’s creation. Put another way, could the states give the central government something they themselves did not already possess? Should, however, states continue relenting and recognizing a warped concept of federal “supremacy" that is not supported by the Constitution, the federal government will continue its consolidation of all powers, until not a single tree, not to mention an entire forest, will grow free from federal regulation. Photo of Coconino National Forest in Arizona Joe A. Wolverton, II, J.D. is a correspondent for The New American and travels frequently nationwide speaking on topics of nullification, the NDAA, and the surveillance state. He is the host of The New American Review radio show that is simulcast on YouTube every Monday. Follow him on Twitter @TNAJoeWolverton and he can be reached at This email address is being protected from spambots. You need JavaScript enabled to view it. Royal F J Royal F J, a popular campaigner who paid his way under the guidance of trainer Jack Carava for most of his lengthy career, has been retired from racing after his 102nd start in Thursday's eighth race at Santa Anita. The 10-year-old gelded son of Royal Academy bred in Kentucky finished seventh at odds of 4-1 in the six furlong sprint for $6,250 claimers, beaten 11 lengths after steadying when in tight after the start. “He was in bad form when I originally claimed him some time back, and when I did, I told myself if he ran better we would continue to race him, and as soon as he tells us he doesn't want to run anymore, we'll take care of him and find him a good home,” Carava said. “He had a little trouble early in the race yesterday, but it was the first time he acted like he wasn't happy running, so it's time. He's still very, very sound for a horse his age with that many races, and that's probably the most amazing thing about him. “He's going to have a good life ahead and we're going to find him a good spot. It's yet to be determined where he's going, but we've had tons of offers so we're going to go through those and find him a good home, but he won't run anymore. “The good thing is he leaves here sound. All the years I had him, he was always at the barn with me. I never turned him out, he never missed any training. He still wouldn't be the kind of horse that would miss any training. “He hits the ground good, he likes going to the track, but it's just time. I don't want to keep running him for $6,000 and $8,000 and not have him run well. We ran him all this year and basically he was finishing one, two, three, but now he's kind of gathered up a few bad races in a row so I don't want to keep running him. “I bought him as a yearling and he's 10 now. He was out of the barn for about six months (after being claimed), so we had him the better part of nine years.” Royal F J picked up $345 for his efforts Thursday, finishing with earnings of $568,150 from nine wins, 19 seconds and 18 thirds. New to the Paulick Report? Click here to sign up for our daily email newsletter to keep up on this and other stories happening in the Thoroughbred industry. Copyright 2019 Paulick Report. As 2016 shapes up to be a pivotal year in player and coaching development in the United States, Planet Ftbol dives into just what American clubs and the federation are doing in their quest to evolve as a soccer nation. This is the first of a three-part series on the subject. The company that helped turn Germany into a world champion and Belgium into the current top-ranked team in the world is now working with the United States. Double PASS, an offshoot of the University of Brussels Department of Sport Management, is a group of the most detailed football auditors on the planet. By mid-2017, every Major League Soccer franchise and each member of the U.S. Soccer Development Academy will go through its process, which started in August 2015. So far, Double PASS has visited the New York Red Bulls, Philadelphia Union, FC Dallas, LA Galaxy, Seattle Sound +worker=11 pack_row=1543 ntok=1024 reason=punct_run>7(count=11,text=...........) text=’s rare to find a company with high ethical standards and this company shows that they care more about the well-being and satisfaction of their customers than anything else. This is the ideal reputable source for those that appreciate customer service. Check Out Lace Wigs 101 You messed up my life: Shweta Basu Prasad lashes out at media in her open letter A day after getting a clean chit from the Hyderabad court, actress Shweta Basu Prasad has issued an open letter to the media. In it, she accuses the media for "creating a mess in her life" and denies the initial statement attributed to her, adding that whoever came up with it must have been "smoking funny cigarettes." While it remains for publications like India Today that first carried the news of Prasad's "admission" to explain themselves, it is quite evident from the new letter that Prasad has released that the neat, grammatically-correct sentences of the first statement are unlikely to have been written by the same person. In September this year, Prasad was arrested by Hyderabad Police during a raid conducted in a hotel and was charged of prostitution. Following the arrest the actress was sent to a rescue home, where she stayed for about two months. The allegations of sex work have been cleared by the Hyderabad sessions court and Prasad is now back in Mumbai, currently working with Anurag Kashyap. You can read her open letter to the media here. It has not been edited for grammatical and punctuation errors. Dear, Members of Media, I grew up admiring some great journalists and reporters who, some times report even live from war-torn borders, natural disaster sites, terror attacked locations, etc. without hesitating a bit. These heroes inspired me to pursue my degree in Mass Media and Journalism degree too. I always thought, ‘wow! These guys, the media, actually risk their lives to bring us the truth’. And boom! You create a mess in my very life. Well done. I understand that everything was a chain of reaction and versions of the incident with several mis-leading stories were picked up along with my...........wait, NOT MY ‘statement!’, which said: “I have made wrong choices in my career, and I was out of money. I had to support my family and some other good causes. All doors were closed, and some people encouraged me to get into prostitution to earn money. I was helpless, and with no option left to choose, I got involved in this act. I’m not the only one who faced this problem, and there are several other heroines who have gone through this phase” Seriously?? Whoever you are, who imagined this statement, were you smoking funny cigarettes at work? Who talks like that? This sounds like a dialogue from some 80's Bollywood film. And why so many ‘and’ in that statement, go back to school amateur! Thankfully my family, my friends and my circle of people didn’t believe this statement. They know I do not speak like that. But, for the rest of India or anyone, anywhere on planet, for the last time : THIS IS NOT MY STATEMENT! The problem with our society is, as long as I was given sympathy and everyone went ‘awwww’, ‘poor girl’, ‘so sad’ and so on, everybody was supporting me. But, as soon as people understand that they got carried away by a false statement and a girl of 23 can be strong and can stand on her own feet without any sympathies, the society feels that she is lying?? What’s my fault if the news were the way they were? I cannot force anyone to like or respect me. These happen naturally. What happened was beyond my control. After my detainment, I went straight to the rescue home where I stayed for 59 and a half days. (60th day, I came home), then where and how did I give a statement to media? My phone was confiscated, I made few last calls to Maa and few other close friends. I had absolutely no access to newspapers, television, internet or radio for those 2 months. I had no clue what was going on outside Prajwala rescue home, Mehboob Nagar (outskirts of Hyderabad). Although I had a lovely time there teaching kids Hindi, English and Hindustani Classical vocals. I always do and I always will count those children in my prayers. I also read 12 books in those 2 months. Yes 12. Spent my time very productively. But, after I came back home in Mumbai +worker=13 pack_row=1510 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=and the violence it has prompted, will be among the challenges facing U.S. Attorney General Loretta Lynch, who was sworn in on Monday. Following her swearing in, Lynch condemned the "senseless acts of violence" and signaled that improving relations between the police and the communities they protect will be high on her agenda. Later, while scenes of riots were broadcast on television, she briefed President Barack Obama. SHANNON STAPLETON/Newscom/Reuters Demonstrators jump on a damaged Baltimore police department vehicle during clashes in Baltimore, Maryland April 27, 2015. Several Baltimore police officers were injured on Monday in violent clashes with young people after the funeral of a black man, Freddie Gray, who died in police custody, and local law enforcement warned of a threat by gangs. BALTIMORE A TROUBLED CITY The extent of the rioting - much of it in a neighborhood where more than a third of families live in poverty - appeared to catch Baltimore officials somewhat off-guard after a week of peaceful protests. After Missouri was criticized for a heavy-handed response to protests over the police killing of unarmed black teenager Michael Brown in August, cities from Madison, Wisconsin to New York have tread a careful line between allowing peaceful demonstrations over police brutality and preventing violence. Gray's family had pleaded for peaceful demonstrations and after the looting started, pastors and community leaders took to the streets to try to prevent violent clashes between black youth and police. Looters were nonchalant and showed their faces. "We went in there and tore it up," said Tyrone Jackson, 16, wearing a hoodie and a thin mustache. He said he was one of the looters inside the CVS. Just down the street from the smoldering CVS, business owner Daisy Bush, 61, said: "The sad part about it is that a lot of people from the community were up there in the CVS, stealing stuff out of it. It's a disgrace." Earlier in the day youths threw rocks and bricks at police. Several officers had broken bones, the police department said. The largely black city has long struggled with high crime and gangs, a reputation that has made it the setting for gritty television police dramas such as "The Wire." At Gray's funeral, speaker after speaker before the crowd packing the 2,500-seat New Shiloh Baptist Church said the world was watching to see if justice would be done for Gray. Gray was arrested on April 12 when he fled from police in a high-crime area. He was carrying a switchblade knife, and he was put inside a transport van to be taken to a police station. At some point, Gray suffered the spinal injury that led to his death a week later. City Police Commissioner Anthony Batts said on Friday that officers failed to belt him into his seat securely and to give him timely medical attention. Police have said they would conclude their investigation by Friday and forward the results to state prosecutors. Six officers have been suspended, and the U.S. Justice Department is investigating the incident for possible civil rights violations. (Additional reporting by Scott Malone in Boston, Dan Whitcomb in Los Angeles and Richard Cowan in Washington; Writing by Fiona Ortiz; Editing by Lisa Shumaker) From Schumer, a two-state solution for the trans-Hudson problem By Benjamin Kabak By Published in 2015 As Gov. Andrew Cuomo stomps his feet and yells, “It’s not my tunnel,” one of New York’s other politicians has proposed a two-state solution for the trans-Hudson rail tunnel issue that may just provide the faint glimmer of a way forward. However, the divide between New York and New Jersey — let alone the feds — on the issue is nearly as wide as the Hudson River itself, and billions remain to be appropriated before we can start celebrating the launch of a new tunnel. In speaking at NYU’s Rudin Center yesterday, Schumer called for a new agency that would oversee the project. The Senior Senator from New York feels that this new agency would best be able to tap into sources of funding that Amtrak can’t reach and New York and New Jersey aren’t eligible for under the current set-up. Left unsaid is the belief emanating from Washington that the Port Authority, a pre-existing, two-state, trans-Hudson body, isn’t the right +worker=9 pack_row=1574 ntok=1024 reason=top_token_frac>=0.080(frac=0.096,count=98,token=s) text=gate puts him quite behind. After sensing that no attack is coming, Puzzle gets his own robo followed by a twilight council for blink, still off of one base. Tassadar goes for colossus tech. Puzzle thinks about attacking, but sees three colossus so just backs off and expands. Tassadar has a hard time moving out on the map since Puzzle's blink stalkers are constantly threatening his main. As a result, Tassadar's natural starts mining long after Puzzle's, but Tassadar is somehow still ahead in probes. Tassadar eventually establishes his natural and starts a dark shrine after building a warp prism. But Puzzle moves across the map with four immortals and a huge blink stalker force. He fakes blink into Tassadar's main, pulling his opponent's colossi away from the front. With the colossi distracted, Puzzle attacks at the front. Tassadar sends his colossi back to the front, prompting Puzzle to actually blink into the main and snipe the now isolated colossi. With his damage-dealers gone, the rest of Tassadar's army quickly falls, and he goes from being at equal supply to 30 supply down in a matter of seconds. Tassadar gg's. As the casters pointed out, Puzzle was down 27-37 probes by the time the battle came, and 27-41 by the end. I wonder if that was intentional or a slip in macro. Or perhaps Tassadar misjudged how many probes he could afford to make. Puzzle 3-2 + Show Spoiler + Xel'Naga Fortress, Tassy clockwise Both players four-gate. Tassadar is the the early aggressor, but cancels his forward pylon and retreats after his initial attack goes poorly. Once Tassadar has left his base, Puzzle instantly cancels a gateway and makes a second assimilator! Puzzle makes a robo. Tassadar gets a second gas himself and makes a council for blink. Tassadar gets aggressive once blink finishes, and almost breaks through Puzzle's defenses with three waves of attacks. But with each attack, an immortal comes out for Puzzle just in time, prompting Tassadar to blink into Puzzle's army to focus it down, which negates the blink advantage of Tassadar's stalkers. Eventually the armies have shrunk so much that Tassadar only has six stalkers, which is not enough to take down an immortal with zealot support. Tassadar is forced to back down, which allows Puzzle to get blink for his own stalkers. When the final blink battle comes, Puzzles stalkers are all completely healthy, while Tassadar's are all injured from previous engagements. Puzzle's superior blink micro seals the deal, earning him the title of Code A champion and the first player to be instantly promoted to Code S under the new tournament format. I am very glad that Puzzle has finally lived up to the potential he showed in the ZOTAC Team Invitational II back in January. I remember trying and failing to navigate some Chinese website to see who this player was that could beat Losira, MVP, MMA, Clide, MC and Ensnare all within a few weeks of each other. Hopefully this win has been enough to reinvigorate his game and propell him to similar victories in Code S. Puzzles wins 4-2 + Show Spoiler + Puzzle has yet to be solved. Puzzles wins 4-2 EDIT: Thanks Ares! The Protoss race did quite poorly in the first three seasons of Code A. They never had a player in the finals, and had a mere %20.8 win rate against the dominant terran race. Last season alone, protoss players won only %20 of all their matches, and didn't send a single one of their ranks past the RO16. This tournament started off looking like it would be similarly weak showing as seven of eleven players were immediately sent down to Code B after losing in the first round.But things finally turned around as the four remaining players won out the rest of the tournament, falling only to their fellow protoss. In all of Code A before this, there had been just two PvPs, both in the opening rounds, compared to seven ZvZs and a who +worker=10 pack_row=1587 ntok=1024 reason=sentence_count<2(count=0) text=was corrected that 9th district delegates should have yellow and 1st district delegates should have blue It was added that 9th district delegates should be up from and 1st district should be in the back I moved to the back to join the other 1st district delegates Around 3:00pm, it was announced that alternate delegates should not be seated in the chairs and instead should be outside (out back) Around 4:00pm, alternate delegates sitting outside were told that delegates had been seated Alternates were told that if they weren’t running to be a delegate, they could go home Shortly thereafter, alternates running to be delegates were told they could reenter the building When I got to a position where I could hear what was going on, it was clear that the caucus chair was explaining the rules and the agenda He put forth a motion that he should be named the permanent chair without a vote He said if there weren’t any objections, we would move forward — but it was likely that no one else in attendance had studied the agenda or knew what to do Then he declared that there had been no objections and asked for a vote of all those in favor Some credentials slips went up and he called it final and moved on After a bit of confusing discussion, it started to become clear that many delegates in the 1st district (sitting in the back) could not hear anything being said (let alone the remaining alternates sitting ouside that had zero idea what was going on) By 4:35pm, motions were being put forth to suspend the rule about adjournment at 5:00pm A motion was put forth to move forward on that vote without discussion about it There were many people expressing confusion and objection to the motion The motions were approved and it was stated that we would not adjourn at 5pm and would instead adjourn automatically when the final credential count was announced Delegates from both sides got up, yelled, and stormed out of the caucus Questions were asked about how long we’d be there Questions were asked about how we’d vote on delegates if we were automatically adjourned when the credential count was announced Questions were asked about how delegate seats would be filled for the delegates leaving It was explained that alternates would be chosen at random to backfill delegates that left, but chosen from the same candidate’s side as the delegate It was explained that precint didn’t matter for the delegate/alternate It was explained that male delegates must be replaced by male alternates and female delegates must be replaced by female alternates There were questions asked about those rules and the chair and others on stage said they didn’t know The speakers explained that they are simply executing with the rules, they don’t set them or understand them A “representative” for Sanders was then introduced and given the opportunity to give a speech His speech was only a couple minutes long and absolutely terrible His speech didn’t represent Sanders accurately and Sanders supporters actually booed him A “representative” for Clinton then gave a 5+ minute speech His speech tried to claim that it won’t matter whether Clinton or Sanders is elected because they both have the same values, but that we should rally behind Clinton At the end of his speech, a motion was put forth to allow for 2nd speeches or for the 1st Sanders speech to be redacted The motion was denied saying “there are no provisions for additional speeches” Instead, we moved to a 5-minute recess After the recess was ended, it was announced that delegates had been seated and alternates not running as delegates could go home After a short while, the credential count was announced and there were only 522 delegates named — it was stated that we needed to get to 599 — therefore we’d need to seat 77 more alternates A motion was put forth to accept the 522-delegate count and proportionally assign delegates instead of seating alternates That motion ended up getting rejected and they called a long list of names to seat alternates After a while, they read a list of names for more alternates that needed to be seated After the names had been read, it was said once again that alternates not running to be delegates could go home A moment later, another list of names was presented to the chair for more alternates that needed to be seated A while later, a new credential count was announced: 562 delegates (still not at 599) Of the 562, it was 369 Sanders and 193 Clinton Someone declared that once we hit 40% of the delegate count it can be declared final and “we can go +worker=7 pack_row=1664 ntok=1024 reason=top_token_frac>=0.080(frac=0.080,count=82,token=) text=organizations. "It is clear that Iran is a country opposed to terrorism and a country that fights terrorism," he said. The United States is the dominant foreign power in the Middle East, sporting close ties with Saudi Arabia, Egypt and Israel, and is militarily involved in both Iraq and Syria, where it is battling Sunni jihadist group, Islamic State. "The Americans know very well that when it comes to important regional issues they cannot achieve anything without Iran's influence or say," Rouhani said, speaking through a translator. Shi'ite Muslim Iran is the closest backer of Syrian President Bashar al-Assad, while Western countries support his mainly Sunni Muslim opponents. However, Tehran and the West are united in their opposition to Islamic State. Adding to tensions in the region is the recent deterioration in relations between Iran and Saudi Arabia. Riyadh broke off diplomatic ties with Tehran this month in an escalating row over the Saudi execution of a Shi'ite Muslim cleric. Rouhani said Saudi was acting out of frustration, branding its 10-month military campaign in Yemen against the Houthi militia, who are allied to Iran, as a flop. "It is angry because of its failures," he said. "Saudi Arabia has been bombing the impoverished people of Yemen for 10 months and has not achieved anything. It has not had any victory and is hated more than ever by the Yemeni people." (Additional reporting by Bozorgmehr Sharafedin, Sam Wilkin and Philip Pullella; Editing by Louise Ireland) They are medium to large in size, with strong feet and bills, rictal bristles , and a single moult each year (most passerines moult twice). Corvids are found worldwide except for the tip of South America and the polar ice caps . [3] The majority of the species are found in tropical South and Central America , southern Asia and Eurasia, with fewer than 10 species each in Africa and Australasia . The genus Corvus has re-entered Australia in relatively recent geological prehistory, with five species and one subspecies there. Several species of raven have reached oceanic islands, and some of these species are now highly threatened with extinction or have already gone extinct. Corvidae is a cosmopolitan family of oscine passerine birds that contains the crows , ravens , rooks , jackdaws , jays , magpies , treepies , choughs , and nutcrackers . [1] [2] [3] In common English, they are known as the crow family , or, more technically, corvids . Over 120 species are described. The genus Corvus , including the jackdaws, crows, rooks, and ravens, makes up over a third of the entire family. The earliest corvid fossils date to the mid- Miocene , about 17 million years ago; Miocorvus and Miopica may be ancestral to crows and some of the magpie lineage, respectively, or similar to the living forms due to convergent evolution . The known prehistoric corvid genera appear to be mainly of the New World and Old World jay and Holarctic magpie lineages: The crested jay ( Platylophus galericulatus ) is traditionally included in the Corvidae, but might not be a true member of this family, possibly being closer to the helmetshrikes ( Malaconotidae ) or shrikes ( Laniidae ); it is best considered Corvidae incertae sedis for the time being. [1] [11] Likewise, the Hume's ground "jay" ( Pseudopodoces humilis ) is in fact a member of the tit family Paridae . [12] The following tree represents current insights in the phylogeny of the Crow family according to J. Boyd. [13] Clarification of the interrelationships of the corvids has been achieved based on cladistic analysis of several DNA sequences . [9] [10] The jays and magpies do not constitute monophyletic lineages, but rather seem to split up into an American +worker=4 pack_row=1603 ntok=1024 reason=top_token_frac>=0.080(frac=0.080,count=82,token=the) text=No.46, "...I propose to compare the federal and state governments, are the disposition and the faculty they may respectively possess, to resist and frustrate the measures of each other. It has been already proved that the members of the federal will be more dependent on the members of the State governments, than the latter will be on the former". Further explaining, the dependency federal and state government have on each other. The general population of the 1780s, as mentioned prior, favored the State government. As explained, "It is also assumed that the lives and interests of the people will be provided for by the States and therefore the people will be more friendly and conversant with those in the State Government". Even though the Federal Government was supposed to be a mold for the foundation of the State, the people would still be bias to the liking of the State and its roles. Once it became time to begin creating new republics, the people feared going back to the monarchy they once lived under by Great Britain. The Declaration of Independence describes that "free and Independent States they have full power to levy war, conclude peace, contract alliances, establish commerce, and to do all the other things which independent States may of right do". It is understood why monarchy was such a large concern considering the freedoms gained from being set apart from it. The military and militia were also discussed greatly in Federalist Paper 46. Because of the people leaning away from the federal government and towards the state government, the military and militia were used as a security for civilians. The restriction of the military and the excessive buffer of militia gave an upper hand towards the state government to defend themselves from the potentially more powerful federal government if they ever chose to step over their boundaries, into the states territory of power. Military and militia [ edit ] During the ratification debate, many Americans feared that the federal government would become too powerful and too similar to the monarchy in Great Britain. Madison calculated while writing Federalist Paper 46 that the standing military, controlled by the federal government, should be kept under a maximum of 30,000 troops, enough to defend America against other nations but not enough to oppress the states. The people themselves, in conjunction with state cooperation, seen as a more likely alliance than the people allying with the federal government vs. a state, in order to protect themselves from the federal government overpowering them with the threat of a standing army like Great Britain did when King George III sent his battalion to America, were encouraged to constitute a total militia of at least 500,000 people. Extravagant as the supposition is, let it however be made. Let a regular army, fully equal to the resources of the country, be formed; and let it be entirely at the devotion of the federal government; still it would not be going too far to say, that the State governments, with the people on their side, would be able to repel the danger. The highest number to which, according to the best computation, a standing army can be carried in any country, does not exceed one hundredth part of the whole number of souls; or one twenty-fifth part of the number able to bear arms. This proportion would not yield, in the United States, an army of more than twenty-five or thirty thousand men. To these would be opposed a militia amounting to near half a million of citizens with arms in their hands, officered by men chosen from among themselves, fighting for their common liberties, and united and conducted by governments possessing their affections and confidence. It may well be doubted, whether a militia thus circumstanced could ever be conquered by such a proportion of regular troops. Those who are best acquainted with the last successful resistance of this country against the British arms, will be most inclined to deny the possibility of it. Besides the advantage of being armed, which the Americans possess over the people of almost every other nation, the existence of subordinate governments, to which the people are attached, and by which the militia officers are appointed, forms a barrier against the enterprises of ambition, more insurmountable than any which a simple government of any form can admit of. Notwithstanding the military establishments in the several kingdoms of Europe, which are carried as far as the public resources will bear, the governments are afraid to trust the people with arms. And it is not certain, that with this aid alone they would not be able to shake off their yokes. But were the people to possess the additional advantages of local governments chosen by themselves, who could collect the national will and direct the national force, and of officers appointed out of the militia, by these governments, and attached both to them and to the militia, it may be affirmed with the greatest assurance, that the throne +worker=1 pack_row=1650 ntok=1024 reason=top_token_frac>=0.080(frac=0.085,count=87,token=) text=– The perfect mixer for any spirit (along with orange juice) – The perfect mixer for any spirit (along with orange juice) Cordial – Sometimes the water at festivals can taste chemically and cordial is the easiest way to hide it. – Sometimes the water at festivals can taste chemically and cordial is the easiest way to hide it. Spirits – Rum is my choice but Vodka, Gin, Whiskey or other liquor should be decanted into a plastic container so it doesn’t get confiscated at the gate. Mix your spirit of choice with 1 part alcohol to 3 parts ginger beer and 1 art orange juice for a festive cocktail. Try it if you haven’t already. – Rum is my choice but Vodka, Gin, Whiskey or other liquor should be decanted into a plastic container so it doesn’t get confiscated at the gate. Mix your spirit of choice with 1 part alcohol to 3 parts ginger beer and 1 art orange juice for a festive cocktail. Try it if you haven’t already. Beer – A mix lager and ale works best for me. – A mix lager and ale works best for me. Cider – Cider can be a refreshing change from warm lager. – Cider can be a refreshing change from warm lager. Wine – A box of wine is a wise investment and tends to stay quite cool in those foil bags. *This Ultimate Music Festival Checklist recommends that you always drink responsibly. Toiletries Suncream – If the sun is out there are often very little places to hide. Tents tend to get very hot and stuffy in the sun and unless you cover yourself in sun cream you run the risk of getting very burnt. – If the sun is out there are often very little places to hide. Tents tend to get very hot and stuffy in the sun and unless you cover yourself in sun cream you run the risk of getting very burnt. Hand Sanitizer – Don’t rely on the event to provide consistent facilities to clean your hands after using festival toilets. – Don’t rely on the event to provide consistent facilities to clean your hands after using festival toilets. Ear Plugs – These will be a lifesaver to anyone who values their sleep and block out those annoying snorers, party animals, and early risers. – These will be a lifesaver to anyone who values their sleep and block out those annoying snorers, party animals, and early risers. Toothbrush and Toothpaste – Cleaning your teeth on a morning can help you feel human again. – Cleaning your teeth on a morning can help you feel human again. Baby Wipes – Or as they are known on this Ultimate Music Festival Checklist, “a festival shower”. – Or as they are known on this Ultimate Music Festival Checklist, “a festival shower”. Deodorant – Again another alternative to showers when you have no other options. – Again another alternative to showers when you have no other options. Micro Towel – Just in case there are showers or you clumsy friend spills a beer inside your tent. – Just in case there are showers or you clumsy friend spills a beer inside your tent. Prescription Medicine – You know what’s going on but tell a good friend in case of an emergency. – You know what’s going on but tell a good friend in case of an emergency. Paracetamol, Ibuprofen, Rennie etc... Toilet Paper – Contraception – Fingers crossed. Festival Checklist for Girls Dry Shampoo – Taking a shower is not always possible and dry shampoo is a great alternative. – Taking a shower is not always possible and dry shampoo is a great alternative. Tampons / Pads / Diva Cup – Along with all your regular feminine products. – Along with all your regular feminine products. 2 x Bras – 1 regular bra and 1 sports bra is a good combination. – 1 regular bra and 1 sports bra is a good combination. Swimsuit – Can be used as extra underwear or bra if not for swimming or getting wet. – Can be used as extra underwear or bra if not for swimming or getting wet. Bandanna – Can be worn as a fashion accessory or to keep your hair up. – Can be worn as a fashion accessory or to keep your hair up. Leggings 2 x Skirts – Take instead of pants if you like your skirt +worker=0 pack_row=1677 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=of people speak of unprecedented censorship and blame Samaras’ government for complying with the demands of extreme-right Chrysi Avgi (Golden Dawn). On twitter there has been talks that ”Geron Pastitsios trolled Greek nationalist blogs, planting hoax accounts of ‘miracles’ which they reproduced without questioning”. According to news portal NewsIt, last Tuesday (Sept 18), GD posed a question at the Parliament complaining about the Facebook page where the administrator insults, mocks and tries to humiliate the sacred figure of Greek Orthodoxy, Elder Paisios”. As thousands protest against this censorship on the internet, the hashtag #FreeGeronPastitsios became a world trending. A petition was created asking the Greek parliament to immediately release the man and abolish anti-blasphemy laws in Greece. After the sentence became known many internet users complain about the censorship and some even compare Greece with Iran. PS “rumors that an international warrant has been issued against Monty Python and the Life of Brian are not confirmed” (stolen from @YBoyio on Twitter) Google Opinion Rewards is now live in India, Singapore, and Turkey, allowing customers from these markets to participate in surveys to get Play Store credit. In the U.S., customers get up to $1 in credit for a survey, and in India the payout starts from 10. That's what I received for the survey I completed, but the figure should change based on the survey. The launch is a win-win as it gives customers the ability to pay for digital content they normally wouldn't (piracy is rampant in India). The platform is cost-effective for advertisers as well, and gives them valuable feedback from millions of users from various socioeconomic backgrounds. Eager to get started? Download the app from the Play Store, select your Google account, and answer a few basic questions about yourself. Let us know how you're liking Google Opinion Rewards in the comments. The 20th Congress of the Communist Party of the Soviet Union was held during the period 14–25 February 1956. It is known especially for First Secretary Nikita Khrushchev's "Secret Speech", which denounced the personality cult and dictatorship of Joseph Stalin.[1] Delegates at this Congress of the Communist Party of the Soviet Union were given no advance warning of what to expect. Indeed, proceedings were opened by First Secretary Khruschev's call for all to stand in memory of the Communist leaders who had died since the previous Congress, in which he mentioned Stalin in the same breath as Klement Gottwald. Hints of a new direction only came out gradually over the next ten days, which had the effect of leaving those present highly perplexed. The Polish communist leader Bolesaw Bierut died in Moscow under mysterious circumstances shortly after attending the 20th Congress. The congress elected the 20th Central Committee. Secret speech [ edit ] On 25 February, the very last day of the Congress, it was announced that an unscheduled session had been called for the Soviet delegates. First Secretary Khrushchev's morning speech began with vague references to the harmful consequences of elevating a single individual so high that he took on the "supernatural characteristics akin to those of a god." Khrushchev went on to say that such a mistake had been made about Stalin. He himself had been guilty of what was, in essence, a distortion of the basic principles of Marxism-Leninism. The attention of the audience was then drawn to Lenin's Testament, copies of which had been distributed, criticising Stalin's "rudeness". Further accusations, and hints of accusations, followed, including the suggestion that the murder of Sergey Kirov in 1934, the event that sparked the Great Terror, could be included in the list of Stalin's crimes. While denouncing Stalin, Khrushchev carefully praised the Communist Party, which had the strength to withstand all the negative effects of imaginary crimes and false accusations. The Party, in other words, had been a victim of Stalin, not an accessory to his crimes. He finished by calling on the Party to eradicate the cult of personality and return to "the revolutionary fight for the transformation of society." The speech shocked delegates to the Congress, as it flew in the face of years of Soviet propaganda, which had claimed that Stalin was a wise, peaceful, and fair leader. After long deliberations, in a month the speech was reported to the general public, but the full text was published only in 1989. Not everyone was ready +worker=1 pack_row=1699 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=, either via sterilization or financial abuse. Even today, women receiving assistance under the California Work Opportunity and Responsibility to Kids program (CalWORKs) are restricted to family caps; if they have an additional child after they sign up for CalWORKs, that child may not receive aid. Women of color on welfare who had additional children were accused by caseworkers of just wanting more aid, even though the money was never enough to live on. In the early 1990s, when I was filling out the financial aid papers to apply to San Francisco State University, I learned that my mother survived on $9,000 a year. During this time, Ronald Reagan’s infamous “Welfare Queen” stereotype conditioned how caseworkers behaved towards poor black women on welfare. I remember once, when my mother had forgotten to fill out one of the many necessary forms, the caseworker curtly told her that she could get “cut off” for a mistake like that. My mother lived in constant fear of having her mental illness discovered. She also feared the rampant crime in Sunnydale, as well as the rumors of “development” that could lead to us being relocated and potentially homeless while they remodeled the dilapidated housing units. She thought she would be free after being released from Napa, only to learn that she had exchanged one form of incarceration for another. Currently, as Northern California prisons become overcrowded, Napa Hospital has taken in more of the criminally insane. Meanwhile, many people with mental illness remain in the prison system, where they are not getting the treatment they need. In California’s carceral state, the twin institutions of welfare and public housing are the new punishment industry for poor women of color. Siobhan Brooks is an assistant professor of African American Studies at Cal State Fullerton. Representatives from almost 30 African countries will be converging on Julius Nyerere International Convention Centre in Dar es Salaam, Tanzania for the first ever three-day Pan Africa Albinism Conference, starting on Thursday (19.11.2015). Albinism is a hereditary condition which causes a total absence of pigmentation in the skin, hair and eyes. People with albinism face discrimination. Regular attacks on albinos in Tanzania, fuelled by superstition, were described by President John Magufuli as a "national shame" during the recent election campaign. The supersititions are numerous. Fishermen believe that their catches will be bigger if albino hair is fastened to their nets. Miners are convinced that powdered albino bone turns into diamond when it is buried in the ground. Some believe that albino body parts are charms that bring the wearer riches. The choice of Tanzania as the venue gives added poignancy to this conference, which the organizers say "will focus on empowering people with albinism." They don't only face problems in Tanzania. So far this year at least 15 albinos have been kidnapped or killed in Mozambique. The true figure could be a lot higher, because fear prevents the victims from reporting such crimes to the authorities. Laurinda Tembe has little hope that the plight of Mozambique's albinos will improve "One of our members has already been burgled," says Laurinda Tembe. An albino herself, she campaigns with a group called mor a Vida (Love of Life) for albino rights in Mozambique. "In one case, a two-year-old baby was saved by the police at the last moment. In another case, a mother was able to escape [from kidnappers] but her daughter was later found dead," she said. Traditional healers protest innocence Traditional healers are often blamed for albino murders. But the spokesperson for Mozambican Association of Traditional Healers (AMETRAMO), Fernando Mathe, denies all knowledge of any such incidents. He said traditional healers would not use body parts because albinos "do not possess anything special that would distinguish them from the rest of us." However, he added that human traffickers misuse the name of the traditional healer for their own purposes. Many albinos have been kidnapped or murdered in Nampula city in northern Mozambique. It lies close to the border with Tanzania where the government has already declared albinos "an endangered minority." Pedro Cossa from the Nampula police force says the threat to albinos could have come from Mozambique's neighbor but insists that "these crimes are not being committed by foreign nationals." Those foreign national +worker=11 pack_row=1742 ntok=1024 reason=top_token_frac>=0.080(frac=0.088,count=90,token=the) text=Sports Illustrated article that announced his return, the reality of him leaving largely hinges on how the 2017-18 season unfolds. If the Cavaliers, after surrounding James with more talent in Isaiah Thomas, Jae Crowder, and Derrick Rose, were able to knock off the vaunted Warriors in the NBA Finals it would make it hard for James to want to leave the franchise. But if the Cavs fail, there is a good chance James will leave and the Cavaliers will again begin to rebuild in the wake of LeBron’s absence. The implication of LeBron leaving the Cavs will have an impact on his career and will also leave an impact on his status as the best player in the NBA. As mentioned before, the Warriors are in prime position to dominate the NBA for the foreseeable future and if James heads to the Western Conference he is resigning to the fact that he cannot get past them in the NBA Finals or in the West as well. The only realistic shot James has to knock off the Warriors if he heads West is if he joined the San Antonio Spurs and that does not seem likely due to the fact that he again wants to play with his friends on the same team. While the future is definitely uncertain for LeBron James’ status as the best player in the NBA for the time being, he still is the King of the NBA for the 2017-18 regular season and one of the greatest players of all time. If the Cleveland Cavaliers, led by James, were able to secure another NBA title in his possible last season with Cleveland it would only further cement his status as the greatest. Beyond that, his status as the league’s best could be up in the air as he enters the twilight of his career and inches closer and closer towards retirement and hopefully being the owner of the Cavaliers some day. THERE is no doubt that good columnists (and, to a greater extent, real leaders) must formulate, rather than follow, public opinion by taking positions which aim at making them popular and likeable. Unfortunately, going against the current requires courage and determination, which are attributes that one rarely comes across. Thus, I am certain to upset some Greek Cypriots with the assertion that the goal of the political union of Cyprus with Greece is obsolete and outdated. The beginning of the Greek national movement dates back to the end of the 18th and beginning of the 19th centuries. Then, under the influence of the political and ideological messages transmitted by the French Revolution and the Napoleonic Wars, the call for the formation of a modern, properly governed, Greek national state, entailing the unification of all the territories inhabited by Greeks (Greek-speaking Christians) was born. Admittedly, an equally important factor that contributed to the process leading to the Greek Revolution of 1821 was the support given to the idea by Tsarist Russia, which, since the time of Peter the Great, conceived the vision of a joint struggle of Orthodox Christians against the Turks, under Russia’s leadership. These plans, which included Greece, led to the establishment in 1814 in Odessa of the Filiki Eteria, an undercover organisation committed to working for Greek independence. The process of establishing a modern Greek state, which commenced at the beginning of the 19th century, lasted many years with failures (such as the disappearance of the thriving Greek-speaking communities in Asia Minor), but also with successes (such as the transfer, in 1947, of the sovereignty over the Dodecanese – then under British command – to Greece). The last steps of this long process were Cyprus and Northern Epirus (Greek-speaking southern Albania). Thus, we reached the 1950 Cyprus Referendum, which overwhelmingly supported the union of Cyprus with Greece and, shortly thereafter, led to the establishment of EOKA (Greek acronym for the “National Organisation of Cypriot Fighters”), modelled after the Filiki Eteria. Possibly, because of sheer momentum, but also with some help from the British (who wanted to keep Cyprus under their control for securing their own interests in the region), we were led into a clash with Turkish Cypriots. It is ironic that the effort to achieve the political union of Cyprus with Greece not only failed but, in fact, it led to arrangements that explicitly precluded such a possibility (the Zurich and London Treaties). Many believe that the idea of the “national state”, which dominated the European scene in the 19th century and the first half of the 20th century, provoked the two world wars. The magnitude of the pain and the losses sustained in the course of these wars gave birth, shortly after World +worker=14 pack_row=1734 ntok=1024 reason=top_token_frac>=0.080(frac=0.080,count=82,token=) text=Herrera’s average was 51.5 percent.) The numbers alone tell the same story anyone watching would’ve seen: Padres pitchers challenged Herrera and stayed away from the heart of the plate against Bryant. That pattern was a sign of respect that labeled Bryant as a hitter who won’t have many more 0-for-4s ahead of him. Pitchers don’t pound the zone against a player unless some combination of past performance, advance scouting, and pitcher’s intuition tells them they can get away with it, so a hitter’s average called strike probability alone tells us something about how big a threat he is. The graph below plots ISO against called strike probability for every batter-season in the PITCHf/x era with at least 1,500 pitches seen. The trend is easy to see: The higher ISO is, the lower called strike probability tends to be, and vice versa. The correlation between ISO and CSP is -0.49, which puts them halfway between a nonexistent relationship and a perfectly intertwined one in which the two stats rise and sink like opposite ends of a seesaw. The correlation between CSP and True Average (TAv), BP’s all-inclusive offensive rate stat, is a slightly weaker but still significant -0.32. Of course, a hitter’s willingness to swing at pitches outside the strike zone plays some part in how far away pitchers work. The nine batter-seasons with the lowest average called strike probabilities all belong to one of three players: Pablo Sandoval, Vladimir Guerrero, and Alfonso Soriano, all of whom are known for a lack of plate discipline as well as a profusion of power. On the whole, though, the less pitchers fear a hitter, the more probable strikes he sees. The table below lists 2014 leaders and trailers in called strike probability, with a minimum of 1,000 pitches seen. There are good and bad seasons on both sides of the list, but the low-CSP group is much more formidable. Lowest CSP Highest CSP Name CSP % Name CSP Pablo Sandoval 39.4 % Wilmer Flores 52.4 % Carlos Gonzalez 40.7 % Ryan Hanigan 52.4 % Josh Hamilton 41.6 % Matt Carpenter 52.3 % Juan Francisco 42.0 % Dustin Ackley 51.9 % Jose Abreu 42.1 % Travis d’Arnaud 51.8 % Pedro Alvarez 42.6 % Ben Revere 51.5 % Hunter Pence 42.7 % Denard Span 51.3 % Giancarlo Stanton 42.7 % Robinson Chirinos 51.1 % Carlos Gomez 42.9 % Logan Forsythe 51.0 % A.J. Pierzynski 43.0 % Kurt Suzuki 50.9 % Last year, Rob Arthur — then of Baseball Prospectus, now of FiveThirtyEight — made one of those analytical breakthroughs that’s so sensible it seems deceptively obvious in retrospect. Arthur realized that the way a pitcher approaches a hitter isn’t only a byproduct of past performance; it’s also a potential indicator of future performance. Arthur created a stat called “zone distance” — the average distance of the pitches a hitter sees, relative to the center of his strike zone — to measure the hitter’s capacity to make pitchers stay away. By searching for players whose zone distances decreased or increased sharply over the course of a season, he found that he could identify hitters who were good candidates to surpass or fall short of their projections in the following season. The pitchers, in some cases, were ahead of the projection systems: They could seemingly tell very quickly when a hitter’s ability had changed, whether because of a mechanical alteration, an injury (or recovery from one), or some other adjustment. With the help of called strike probability, we can conduct a similar search to find hitters whose early-season pitch pattern should raise or lower our expectations. For a typical batter, CSP stabilizes, becoming an accurate representation of a hitter’s true talent, in roughly 300 pitches, or 75-80 plate appearances. We’ve come to the point in the season when hitters are crossing that threshold, so we can look for the players whose called strike probabilities have changed the most in 2015. As a proof of concept, let’s review how well this method would have worked last year. The table below +worker=14 pack_row=1735 ntok=1024 reason=top_token_frac>=0.080(frac=0.105,count=108,token=) text=lists the hitters whose called strike probabilities changed the most over the first 300 pitches of 2014, relative to 2013 (min. 1,500 pitches in 2013). The left side shows the hitters whose called strike probabilities fell most sharply — theoretically, the ones who were suddenly striking more fear into pitchers than they had the year before. The right side shows those who were making pitchers more daring. The numbers listed in the “Proj.” column are projected True Averages from PECOTA, BP’s projection system, and those listed under “Act.” are actual results. If our approach is sound, we’d expect to see the hitters with falling CSPs outperform their projections. 2014 Called Strike Probability Fallers 2014 Called Strike Probability Risers Player CSP +/- Proj. Act. Diff Player CSP +/- Proj. Act. Diff Hunter Pence -9.2 % .284 .289 +.005 David Wright +7.0 % .298 .259 -.039 Raul Ibanez -4.8 % .262 .220 -.042 Miguel Cabrera +6.2 % .341 .309 -.032 Lorenzo Cain -4.4 % .258 .269 +.011 Dustin Ackley +5.2 % .266 .261 -.005 Alcides Escobar -4.1 % .236 .255 +.019 J.P. Arencibia +5.1 % .251 .228 -.023 Coco Crisp -3.6 % .268 .280 +.012 Allen Craig +4.9 % .292 .222 -.070 Seth Smith -3.4 % .272 .312 +.040 Anthony Rendon +4.9 % .270 .302 +.032 Adam Lind -3.3 % .279 .301 +.022 Dan Uggla +4.9 % .272 .184 -.088 Chris Carter -3.2 % .275 .293 +.018 Domonic Brown +4.8 % .281 .246 -.035 John Buck -3.1 % .252 .241 -.011 A.J. Pollock +4.6 % .249 .306 +.057 Alejandro De Aza -3.0 % .269 .255 -.014 Carlos Beltran +4.4 % .290 .258 -.032 As expected, seven of the 10 players on the left beat their PECOTA projections, while eight of the 10 on the right failed to match their projections. That’s 15 out of 20 correct calls, a 75 percent success rate. The lists weren’t without some big misses: Evidently, pitchers believed in Ibanez’s 29-homer 2013, which tied Ted Williams for most home runs by a 41-year-old, but the lefty was washed up at 42. The method also significantly underestimated A.J. Pollock and Anthony Rendon, who enjoyed breakouts that neither this system nor the pitchers who bore the brunt of their bats saw coming. But most of the news is encouraging. Pitchers anticipated a bounce-back from Alcides Escobar and strong seasons from Lorenzo Cain, Adam Lind, Chris Carter, and others. They also bought into the Seth Smith renaissance: Coincidentally or not, the 32-year-old Smith has posted a 137 wRC+ in 621 PA since undergoing a second LASIK procedure in August 2013, compared to his 106 wRC+ in a larger, pre-second-surgery sample in his prime. If the touchup gave him the power to stare into pitchers’ souls, those pitchers can sense it. Pitchers also acted less cautious around a number of hitters who had down years by their usual standards, due to injury (David Wright, Carlos Beltran) or advancing age (Miguel Cabrera), or who threatened to wash out of the league (Dan Uggla, J.P. Arencibia). They also lost their wariness of Domonic Brown, who mysteriously cratered at age 26 after his breakout 2013. Using CSP as an early-warning system could +worker=3 pack_row=1778 ntok=1024 reason=too_many_urls(count=3,max=2) text=, Governor Corbett is trying to relax his state's liquor laws so women can "buy a six-pack or two six-packs, buy dinner and go home." And, presumably, cook. Watch: https://www.youtube.com/watch?v=BO0CHCIBkG4 Image by Chesapeake Bay Program via Flickr Hat tip: PhillyMag via Talking Points Memo See a mistake? Email corrections to: [email protected] m. Ginsburg on Trump comments: 'I regret making them' CLOSE Ruth Bader Ginsburg isn't the first Supreme Court Justice to talk politics. Video provided by Newsy Newslook Ruth Bader Ginsburg regrets her insults of Donald Trump. The Supreme Court justice — who has been involved in a scuffle with the presumptive Republican nominee over the past few days — said she regretted her remarks and promised to stay out of it in the future. "On reflection, my recent remarks in response to press inquiries were ill-advised and I regret making them,” Ginsburg said in a statement. "Judges should avoid commenting on a candidate for public office. In the future I will be more circumspect." Later Thursday in an interview with NPR, Ginsburg described her remarks as "incautious." "I said something I should not have said," she remarked. When NPR's Nina Totenberg asked her "if she just goofed," Ginsburg responded: “I would say yes to your question, and that's why I gave the statement. I did something I should not have done. It’s over and done with and I don't want to discuss it anymore.” In three separate interviews the justice sounded off on Trump, at one point saying she didn't “want to contemplate” the effects a Trump candidacy would have on the court. Ginsburg is known for her liberal bent, but the comments created a firestorm nonetheless because members of the Supreme Court generally avoid getting involved in presidential politics. Trump called on her to resign from her post and said “her mind is shot.” But he wasn’t the only one unhappy with the remarks: Ginsburg received widespread (and bipartisan) criticism, even earning editorials from both The New York Times and The Washington Post. Read or Share this story: http://usat.ly/29SDlnZ So much has happened in her life that you would not believe she is just 26 years old. Hers is syn onymous with innovation, success and excellence. It started with a resignation from a high-flying job in England, and relocation to Nigeria. So determined to make a difference in medical practice, Dr Ola Orekunrin decided to set up, The flying doctors, the first air ambulance service in West Africa. Her journey to setting up such a capital intensive and delicate business was prompted by a death—her younger sister died of sickle cell anaemia. “She was always in and out of hospitals but eventually died for lack of the availability of air ambulance. This more or less propelled my interest in medicine because I really wanted to make a difference in the same way doctors had done to her. Setting up the company was a direct result of my fascination for helicopters, trauma medicine, motor accident kinematics and pre-hospital medicine. I knew it was something that I had the skills and experience to do,” she reminisces. The flying doctors eventually came to fruition about two years ago and it basically provides critical care transportation solutions to both the private and public sector by selling yearly air ambulance cover plans to states, companies and individuals. She says of the company, “The first time an air ambulance service was suggested for Nigeria was in 1960 and nothing was done about that idea. Having studied the models in Kenya, Libya, Uganda and India, coupled with my growing passion to help improve the health care system in Nigeria, which I believe is poor, I became even more determined to bring a similar service to Nigeria. “We are completely physician-led and adhere to the highest standards of medical practice supported by the East Anglian Air Ambulance in the United Kingdom. Our mission is simple— to provide the best possible standard of health care to all.” Wondering if the low income earners would benefit from such high end service? She says, “What I do hope is that more states will take up cover as well as making it increasingly available to the common man. I know that as Nigeria starts to take health care reform more seriously, this will begin to happen.” But the road to achieving the appreciable level of success was anything but smooth. Ekiti State-born Orekunr +worker=15 pack_row=1765 ntok=1024 reason=top_token_frac>=0.080(frac=0.084,count=86,token=) text=s in the country's largest city, "cannot be pardoned or forgiven". A bus carrying Turkish police officers appeared to be the target of the blast, which struck during Tuesday morning's rush hour in the historic Beyazit Square district near Istanbul University and tourist sites. We’ll tell you what’s true. You can form your own view. From 15p €0.18 $0.18 $0.27 a day, more exclusives, analysis and extras. The governor of Istanbul, Vasip ahin, said seven police officers and four civilians were killed, with 36 others wounded. There were fears the death toll could rise as three people remained in a critical condition. A parked car packed with explosives was detonated using a remote control as the police bus passed, local reports said. The charred wreck of a partially destroyed vehicle could be seen next to the bus, which was flipped upside down by the force of the explosion. The blast also damaged nearby buildings, blowing out windows, reducing frontages to rubble and leaving debris strewn across the road. The windows at a famous 16th-century Ottoman mosque, Sehzadebasi, also shattered. “There was a loud bang, we thought it was lightning but right at that second the windows of the shop came down. It was extremely scary,” Cevher, a shopkeeper whose business was damaged, told Reuters. Four suspects were arrested hours after the attack and were being questioned by police on suspicion of hiring the car used to carry the explosives. Shape Created with Sketch. In pictures: Istanbul bomb attack Show all 10 left Created with Sketch. right Created with Sketch. Shape Created with Sketch. In pictures: Istanbul bomb attack 1/10 A general view shows police officers inspecting the site of a bomb attack to a police bus EPA 2/10 A police officer stands next to the wreckage of a vehicle at the scene of a bomb attack to a police bus in the Vezneciler district of Istanbul EPA 3/10 Police officers secure the area surrounding the scene of a bomb attack targeting a police bus in the Vezneciler district of Istanbul EPA 4/10 Police officers and emergency services work at the scene of a bomb attack 5/10 A Turkish medic arrives as security officials and firefighters work at the explosion site after a bus carrying riot police official was struck by a bomb AP 6/10 Police walk near a Turkish police bus which was targeted in a bomb attack in a central Istanbul district Reuters 7/10 Turkish security officials and firefighters work at the explosion site after a bus carrying riot police official was struck by a bomb AP 8/10 Special police walks near the site where a Turkish police bus was targeted in a bomb attack in a central Istanbul district REUTERS 9/10 People remove glass of a destroyed shop window near the site where a Turkish police bus was targeted in a bomb attack REUTERS 10/10 Police inspects the scene near a Turkish police bus which was targeted in a bomb attack in a central Istanbul district Reuters 1/10 A general view shows police officers inspecting the site of a bomb attack to a police bus EPA 2/10 A police officer stands next to the wreckage of a vehicle at the scene of a bomb attack to a police bus in the Vezneciler district of Istanbul EPA 3/10 Police officers secure the area surrounding the scene of a bomb attack targeting a police bus in the Vezneciler district of Istanbul EPA 4/10 Police officers and emergency services work at the scene of a bomb attack 5/10 A Turkish medic arrives as security officials and firefighters work at the explosion site after a bus carrying riot police official was struck by a bomb AP 6/10 Police walk near a Turkish police bus which was targeted in a bomb attack in a central Istanbul district Reuters 7/10 Turkish security officials and firefighters work at the explosion site after a bus carrying riot police official was struck by a bomb AP 8/10 Special police walks near the site where a Turkish police bus was targeted in a bomb attack in a central Istanbul district REUTERS 9/10 People remove glass of a destroyed shop window near the site where a Turkish police bus was targeted in a bomb attack REUTERS 10/10 Police inspects the scene near a Turkish police bus which was targeted in a bomb attack in a central Istanbul district Reuters President Erdogan described the attack on officers whose jobs were to protect others as “unforgivable”. “These cannot be pardoned or forgiven - we will continue our fight against these terrorists until the end, +worker=11 pack_row=1793 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=masked men allegedly grabbed the striker "by force" but left his girlfriend unharmed in the vehicle. "We have information that he was intercepted by armed people and since then, his whereabouts are unknown," state prosector Ismael Quintanilla told reporters. Quintanilla said that law enforcement has no indications that Pulido's family has been contacted by his kidnappers. The prosecutor added that any rumours that the footballer had been found were false. The Guardian quoted a state security source, who had noted that Pulido had been seen driving a BMW in his home town, but it is unclear whether that was the vehicle Pulido was driving the night of his kidnapping. The Tamaulipas Coordination Group - which is comprised of state and federal agencies - announced on Twitter that it was leading the search effort to find the young athlete, BuzzFeed News reported. Pulido plays for Greek club team Olympiakos and has made several appearances with the Mexican national team. Following his disappearance, Olympiakos tweeted, "We sincerely hope that this ordeal ends soon and that he will return home safely." According to the Guardian, Pulido was excluded from the Mexico squad for the Copa America due to a legal dispute with his former Mexican club, Tigres. The team nevertheless posted their solidarity with Pulido's family following his disappearance. "@TigresOficial expresses its solidarity with the family of @puliidooo in light of the difficult situation they face," the club tweeted. Pulido's kidnapping, which has triggered an outpouring of support, has highlighted Mexico's extreme cartel violence, with reports of The Gulf Cartel vying for total control of the prevalent drug trade in Tamaulipas state. The Citizen Council for Public Security and Criminal Justice, a think tank in Mexico City, ranks the metropolis as the second-most dangerous city in Mexico for kidnappings. The Guardian reported the Gulf Cartel and its former armed wing, Los Zetas, have fought over the state since its break up in 2010. Getting Paid to Sleep is a Thing in China This could literally be everyone's "dream job" and the only position where sleeping on the job will not be a problem. A company in Shanghai is making headlines for what is perhaps the most coveted job position in the world: a professional sleeper. A manufacturer of dietary supplements in mainland China is looking to pay a salary of 100,000RMB (USD14,400) yearly to their professional sleepers. Like Us on Facebook Advertisement Successful candidates will test the supplements and provide a comprehensive report on its effects. However, it's not just all snoozing. The professional sleepers will have to put themselves in different sleeping patterns mirroring people of different occupations. For instance, a software programmer's sleep pattern is erratic and vastly different to those working a normal day job, as well as people on night shifts. After adapting to different people's sleep pattern, the professional sleepers will produce a report that includes the quality of sleep, feedback, and suggestions. The job does not require any past experiences, but a "love for sleep" is needed (who doesn't love sleep?). People from different job industries can apply. Getting paid to sleep is slowly becoming famous as it carves a niche in the job field. In the US, hospitals, research facilities, and even NASA, hire professional sleepers for studies, with annual payouts reaching as high as USD300,000. Advertisement Advertisement 2019 Chinatopix All rights reserved. Do not reproduce without permission By: | Deep Ocean Technology, a company based in the Polish seaport city of Gdynia, is developing an underwater hotel in what it intends to be the most luxurious accommodations imaginable. The company, which also develops underwater vehicles and machinery for seabed exploration, is working with scientists and engineers from the Gdask University of Technology from the Faculty of Ocean Engineering and Ship Technology to make their developments a reality. The Water Discus Hotel is divided into two main parts, or “discs”, one above the surface and the other below in the depths of the water. “This combination will allow guests to admire the depths of the ocean while making the most of the warm climate,” says the company. The hotel will be anchored to the seabed with five sturdy legs and is subject to the “highest safety standards,” with periodical evaluations of the structure. “Our safety measures include a +worker=5 pack_row=1790 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=for 7am and a set of hairy balls on my shopping list. #alexa — Barto (@scottbarto) September 14, 2017 Our Alexa reacting to her name being said on #southpark pic.twitter.com/xY942sLHNK — Vandal (@SSnatter) September 14, 2017 This @SouthPark episode has set my @amazon Alexa off about 15 times so far. Had to unplug it — Chris (@ChrisMn84) September 14, 2017 Don't watch the new South Park in same room as your Amazon Echo...or else Alexa will add peaches to your grocery list and set alarm for 7 am — Brt (@Bar_Tosh) September 14, 2017 @SouthPark THANK YOU for making my Alexa say BIG HAIRY BALLS #SouthPark21 — Mike (@MIKEY_MILD) September 14, 2017 Google Home was also feeling spunky, owners say: This new @SouthPark is confusing the hell out of my Google Home #okgoogle — airharvey (@AirMississippi) September 14, 2017 This new @SouthPark is confusing the hell out of my Google Home #okgoogle — airharvey (@AirMississippi) September 14, 2017 OMG. Thanks @SouthPark for setting off my Google Home. ? #SouthPark21 — Brandon J Alexander (@UNCgrad_99) September 14, 2017 #SouthPark21 got the attention of my Google Home. @SouthPark — Erik Parshall (@ErikParshall) September 14, 2017 We’ve reached out to Google and Amazon for more information on how this could happen, and whether the companies have plans to deal with these kinds of situations going forward. We’ll update this post if we hear anything back. Of course, this isn’t the first time TV content has messed with voice-activated devices. Back in April, a Burger King commercial for the Whopper forced Google Home devices to chime in with information about the burger. Soon after, Google blocked the ad from triggering Home devices, but Burger King found a way around it again. Editor's Note: This article originally appeared on Consumerist. Sykipot is not a new Trojan Horse by any means, but the variation found to be attacking Department of Defense smart cards is certainly something that government agencies need to be worried about. United States government agencies, that is. It's doubtful the Chinese government will be too worried about them, considering that the Sykipot-led attacks against these US government agencies would appear to be originating from China itself. Security specialist AlienVault has uncovered evidence that the attacks might stretch right back as far as March 2011 and have been targeting a number of agencies which use ActivIdentity, or more specifically the smart card readers running ActivClient (the client application of ActivIdentity) and which smart cards are now standard security measures for the US Army, Navy, Air Force as well as the Department of Defense itself. The smart cards are used not only to identify military personnel but civilian employees and contractors for example. Jaime Blasco, AlienVault's Research Lab Manager, reckons this is the "first report of Sykipot being used to compromise smart cards" although he does admit that a year ago another security vendor wrote about smart card proxy attacks "although the report did not provide specifics on the attack methodologies being used, the term is useful in describing this latest style of attack vector." The research team have apparently so far found evidence of attacks compromising cards running on the Windows Native x509 software which is pretty commonplace, as I understand it, within US government agencies. Blasco makes the China connection as he has reason to believe that the Sykibot 'swarm' team are Chinese and working to a known 'data shopping list' which includes semiconductor and aerospace technology information. Indeed, the new strain is thought to come from the same Chinese hackers which created an earlier Sykibot version that spammed messages containing promises of information on US drone technology. Once activated, the Sykibot strain employs keyloggers to harvest PINs for the smart cards in question which allows the malware to act as an authenticated users and therefore access sensitive information under the control of its allegedly Chinese controllers. Patrick Kovarik, AFP | Russian author Andre Makine poses at the library before his induction into the Académie Française in Paris on December 15. Russian novelist Andrei Makine vilified the "criminal" West as he received France's highest literary honour on Thursday, calling +worker=7 pack_row=1895 ntok=1024 reason=too_many_urls(count=4,max=2) text=France. “There is a basic saying: ‘You don't criticize your country abroad.’ It was a blunder,” the French official I spoke to told me. Macron tried to explain what he meant, but ended up miring himself deeper in a culture war about how the French handle — and don’t handle — their colonial history. His opponents immediately pounced. “This hatred of our history, this constant repentance is undignified for a presidential candidate. It wasn’t so long ago that Mr. Macron recognised some of the positive aspects of colonisation. This means that Emmanuel Macron has no spine. He’s simply saying what people want to hear,” Fillon said at a political rally in February. Macron is also an intellectual who speaks a florid, sophisticated French, the French official pointed out to me, which means that like his Algeria statements, his speeches are too often pitched at the academy, rather than at the street and global community. There have been other critiques as well. A Le Monde profile of him quoted the current health minister, Marisol Touraine, calling his deft maneuvering around Hollande the “hold up of the century.” The piece also described it as the “crime of the century” and a “parricide” — the murder of a parent. The €64,000 question: can Macron actually win? The biggest wild card in the French election right now is whether Macron can inspire and motivate enough voters to actually win the presidency. For years, there has been what the French call a “firewall” against the election of a far-right leader. In the second round, no matter how far a Front National candidate may have gotten, the entire country has historically hunkered down and voted for the other candidate. That’s what happened in 2002: Jean-Marie Le Pen, co-founder of the FN, and Marine’s father, came in a shocking second above the other candidates, in the first round against Jacques Chirac. But then Chirac walloped him in round two, securing a whopping 82 percent compared with Le Pen’s 18 percent. This year, though, that firewall has felt a little less secure. As March turned into April there was growing concern that some 30 percent of the French electorate had been fairly consistently telling pollsters that they simply aren’t interested in any of the candidates. “Macron is the same as all the other politicians who went to the same schools and eat at the same restaurants,” one 24-year-old told the Financial Times. “Most of us will probably abstain if he is the only other choice to Le Pen.” This wave of non-interest may have been overstated. While turnout for round one appears to have been below 2012, it was up above 70 percent already by 5 pm local time. The French normally go to the polls in enviable numbers — 80 percent turnout is not unusual. (Turnout in US presidential elections for 2016 hovered around 55 percent, by comparison.) Nevertheless, France watchers worry that abstention and apathy would help boost the far right. Like Trump in the 2016 US election, Marine Le Pen may not have the absolute numbers that can win her the election if everyone turns out, but her voters appear to be more energized than the general electorate. The Financial Times and Quartz have both reported how abstention combined with a robust Le Pen fan base might mean she can eke out a victory. This is where Macron’s Rothschild bank past, and his youth, could hurt him — and help Le Pen. Philippe Marlière, a professor of French and European politics at the University College of London, calls the Macron movement a “gamble” on “dynamism” and youth. As election day has gotten closer and closer, the constantly fluctuating polls have everyone uncertain. Whether that youthful gamble will ultimately pay off remains to be seen. The French political establishment is taking no risks however. As soon as the results came in the current prime minister issued a dire call to arms to fight the far right. France Presidential Election: Prime Minister Cazeneuve calls for Macron support https://t.co/soV554sxEX https://t.co/eeCyvQ0SvM — Veo News (@VeoNews_) April 23, 2017 This story is part of a Vox.com collaboration with the Pulitzer Center on Crisis Reporting about the upcoming French elections. Watch: What Marine Le Pen wants for France http://www.feelinstrangelyfine.com/2016/06/aunva +worker=6 pack_row=1888 ntok=1024 reason=punct_run>7(count=8,text=........) text=GP was accused of having provided police escorts, protection to Sen and the group. Committed suicide after his house was searched by CBI. Santanu Ghosh Owner of a fake firm, Global Automobiles, he is accused of offering cash/property owned by Saradha as collateral to secure bank loans worth Rs 200 crore. *** Point-Counterpoint Saradha formed long before Mamata was swept in to power in 2011 (The group appears to have supported the TMC in various ways though) She did not ask people to deposit their money with Saradha (She lent credibility to the group by being seen with the promoters) * Her government ordered the arrest of Sen (State police accused of destroying evidence and soft-pedalling the case) * Set up an SIT to probe the scam (Opposed a CBI probe and SIT has made no headway) Set up a Commission of Inquiry (It has been reduced to a post office, clearing people for compensation) The only government to disburse compensation to cheated depositors (There are allegations of fake names and irregular payments) No evidence so far that she personally benefited from the scam (Arrested Rajya Sabha MP Kunal Ghosh’s allegations under probe) By Dola Mitra in Calcutta It seems like we can’t even go a month without some stupid journalists falling for a prank anymore. This is starting to become a trend. At least once a month, /pol/ makes shit up to troll journalists, the journalists fall for it, normies believe the journalists and then get offended by something that is completely fabricated, making them look like idiots. It works like literally, every single time. Trolls have either become too smart, or the general population has just become too dumb. About two months ago, 4chan trolls on /pol/ set out to convince journalists that the “OK” sign was a white supremacist symbol. Calling it “operation OKKK”, they set out to convince internet users, mostly on Twitter, that the OK sign had been co-opted by Neo Nazis. Users were advised to create fake social media account of “basic white girl names” and spam the social media sites, accusing the sign of being racist. “Leftists have dug so deep down into their lunacy. We must force [them ]to dig more, until the rest of society ain’t going anywhere near that shit”, the user said: They created several memes of supposedly racist people using the sign, to make it seem more believable that the sign is indeed racist: In no time, posts begun appearing all over social media, accusing the sign of being racist: In the subsequent days and month, other posts were made on /pol/ to keep the operation active and alive. Users were asked to use the hashtag “#Notok” to spread the message: Surely, this is too far fetched, right? No journalists could possibly fall for this. Right?...... In no time, an article appeared online, titled “The OK sign is becoming a white supremacist symbol“. The author of the article said he had no idea how the sign became an alt-right symbol, but suggested that Pepe may be to blame: It’s unclear exactly how the OK symbol got started as an alt-right meme, but it may trace back to a version of “Smug Pepe,” a meme in which Pepe holds his chin. In one variation he’s instead making an OK hand gesture, reminiscent of Trump. Even The Independent took the bait this week, accusing two white house correspondents of being white supremacists for making the hand sign. The Independent also pointed to Pepe as the possible source of the “hate symbol” Freelance journalist Mike Cernovich and Cassandra Fairbanks, a reporter for Russian news outlet Sputnik, posed for a picture behind the podium in the White House briefing room. In the photo, they are making a hand sign that can be used to signify “white power.” The symbol........has become more contentious with the rise of the alt-right – a far-right contingent in the United States that rejects both mainstream conservatism and liberal ideologies. The self-proclaimed founder of the alt-right, Richard Spencer, is a well-known white supremacist. The resurgence of the symbol may be traced back to a popular alt-right meme, known as “smug Pepe,” which began circulating on alt- +worker=3 pack_row=1900 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=seem likely to be moderate. NASA has modeled the likely impact and decided that astronauts aboard the International Space Station do not need to take any precautionary action. On Earth, some international airlines have rerouted planes from polar areas to routes where radio communication is less likely to be affected by the geomagnetic storm, while people in South Africa – near where the Earth's magnetic field is weakest – have been advised to stay out of the sun this afternoon. Can I see it? The changes in the Earth's magnetic field are not visible, but solar storms can cause unusually intense Northern Lights. The phenomenon may also be visible further south than usual. SpaceWeather.com has photos of recent displays so you know what to look out for. More from GlobalPost: Rare Northern Lights illuminate skies across North America RICHMOND, Va. (AP) — A Virginia lawmaker charged with forgery and perjury wants authorities to return materials seized from his law office. Del. Joe Morrissey’s motion to have the items returned will be heard Monday in Henrico County Circuit Court. Morrissey says authorities executing a search warrant last month took case files and computers, bringing his law practice to a virtual standstill. The 57-year-old Morrissey is charged with fabricating a document that he presented as evidence in a previous case. In December, Morrissey was convicted of contributing to the delinquency of a minor after prosecutors accused him of having sex with a 17-year-old employee of his law office. He was sentenced to six months in jail and is spending nights locked up and attending General Assembly sessions during the day on work release. Copyright 2019 The Washington Times, LLC. 0 Seattle woman says mother, a U.S. citizen, being tortured by Chinese Government A Seattle woman says her mother, Sandy Phan-Gillis, has just recently been given a lawyer after being detained in China on a business trip in March of 2015. Catherine Chan says her family just received a letter from her mother saying she’s been subjected to solitary confinement and mental torture by officials from China State Security. KIRO 7 first told you of the situation when Chan and her family came public with it in September of 2015. The day after the KIRO 7 story aired, Chan says her mom, a U.S. and Chinese citizen, was allowed to make a phone call. “But the call was to my step dad to stop the media campaign,” said Chan. “They were threatening to take away her privileges, like her seeing a doctor, getting medication.” Chan says the Chinese haven't followed through with her family, so they're launching another media campaign. “It's been almost a year, now, and they're not willing to speak to us to even negotiate anything,” said Chan. Now, the family is asking anyone who hears their story to contact the Chinese government. On SaveSandy.org, they've listed Chinese Consulate contact information and shared the recent letter from Phan-Gillis. She told KIRO 7 that the State Department has told them that when a U.S. official meets with a Chinese official, they ask about Phan-Gillis and are told she's healthy. Now, she's hoping President Obama will push for her release while in China for the G-20 Summit in the next week. “We don't want her to get lost in the system,” said Chan. “Especially when she's an American citizen getting treated that way only because she's Chinese.” The State Department gave KIRO 7 a statement Tuesday afternoon saying they have repeatedly pressed the Chinese government to follow the UN recommendation to release Ms. Pham-Gillis. 2019 Cox Media Group. Just a couple of weeks ago Matt and Russ gave the Montreal Impact slim chances in the first leg of the CONCACAF Champions League Final vs Club America. Now, Matt, Alec, and Russ take a long hard look at a Montreal club that is seemingly in the driver’s seat going back home for the second leg. The boys then dive into previewing this weekend’s MLS action, including a schedule that includes FIVE national TV games. Then, Russ has a chat with New York Red Bulls defender Chris Duvall about the transition from college to the professional game, the importance of team mentality in the Red Bulls hot start, and what he’s been up to on bye weeks in NYC. Finally, the guys have some real talk about the +worker=1 pack_row=1892 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=missiles and other heavy weaponry at their disposal. NORRIS: Is there still fighting in that area? GARCIA NAVARRO: And now, about 350 of them are being held. And when I asked what would happen to those pro-Gadhafi forces, I was told matter of factly that the foreign mercenaries would be executed. I've already seen videos and pictures, too many to count, of what people here tell me are dead mercenaries killed by the crowd in many cities here in the east. NORRIS: So when we hear Gadhafi call for the military to crush the protesters, it sounds like it's a very different picture there. What would that mean there? Is there - it sounds like there's not much of a military presence there, at least a pro-Gadhafi military presence. GARCIA NAVARRO: Yes. There's very little pro-Gadhafi military presence. Certainly, though, in the lobby right behind me, the general of the Libyan forces here in the east is actually giving a press conference, talking about how he is no longer on the side of Gadhafi. So you see that this area is seemingly broken away and they feel that they can wait it out. They're just waiting for Gadhafi to leave. NORRIS: What do the people in this part of Libya expect now? There are suggestions or tweets in other reports that they're actually developing different names for this part of the country. GARCIA NAVARRO: Now, Michele, if you think about this country, this has been a country where very few Western journalists have traveled before without the accompaniment of a minder and very few people have been able to travel it and speak to people frankly. And this is the first time that they were actually able to speak to a Western journalist openly about what they felt about Moammar Gadhafi. And what they felt was a great deal of contempt and rage. NORRIS: NPR's Lourdes Garcia Navarro is reporting from eastern Libya. Lourdes, thank you very much. And please stay safe. GARCIA NAVARRO: You're welcome. Copyright 2011 NPR. All rights reserved. Visit our website terms of use and permissions pages at www.npr.org for further information. NPR transcripts are created on a rush deadline by Verb8tm, Inc., an NPR contractor, and produced using a proprietary transcription process developed with NPR. This text may not be in its final form and may be updated or revised in the future. Accuracy and availability may vary. The authoritative record of NPR’s programming is the audio record. Back to previous page Accusations against generals cast dark shadow over Army By Ernesto Londoo, The accusations leveled against three Army generals over the past six months are as varied as they are striking, the highest-profile of a growing number of allegations of wrongdoing by senior military officials. A one-star general was flown home from Afghanistan this spring to face criminal charges, including sexual assault. A four-star general formerly in charge of the increasingly vital Africa command was accused of financial mismanagement, accepting inappropriate gifts and assigning staff personal tasks. And a three-star general who oversees the U.S. Missile Defense Agency was described in an inspector general report as an abrasive and verbally abusive boss. The investigations have become an embarrassment for the Army, raising questions about how thoroughly the military has screened senior leaders before putting them in crucial assignments. The Defense Department’s inspector general reviewed 38 cases of alleged wrongdoing by senior officials in 2011, and substantiated the accusations in nearly 40 percent of the them, up from 21 percent in 2007. The total caseload this year is on track to exceed last year’s. “It’s always concerning when senior leaders have issues, because we have very specific faith in senior leaders,” Gen. Ray Odierno, Army chief of staff, said in a recent interview. Odierno said all such cases are taken seriously, but argued that “we can’t allow a few to detract from the honorable service of many.” The investigation into Gen. William E. Ward, the former chief of Africa Command, is being closely watched at the Pentagon, where rank-and-file officers wonder aloud whether senior leaders will be reticent to punish one of their own. A June 26 report, compiled after investigators pored through a trove of +worker=11 pack_row=1946 ntok=1024 reason=punct_run>7(count=8,text=........) text=possible that the needs of intensely discontented followers for expressive hostility will force leaders into more violent action than they consider desirable on tactical grounds, on pain of losing control. They may then develop more routinized, less violent means of symbolic protest of the kinds used by the regimes to minimize the destructive consequences of protest........The ritual use of antigovernment demonstration and strike, accompanied by high levels of verbal hostility, is one possible outcome of this process.”[4] NO FORCE OR RHETORIC CAN STOP ANY LONGER THE GROWING SOCIOECONOMIC DISCONTENT FACING THE YOUTH THAT WILL SERIOUSLY CHALLENGE THE REGIME’S LEGITIMACY From this leadership and organizational perspective, the reality of a competent person and more importantly a regulatory body and force should be the critical element in predicting the future of Iran. The entity that can capture comprehensively by channeling both the politico and military leverage in a post-Khamenei Iran will most likely be cementing what shall follow for at least – the short term. The shortlist of options and evaluations based on the notion of Leadership and Organization could be the following: The mullahs and the ruling apparatchik are naturally likely to put forward their best face and effort in maintaining the status quo as though nothing has happened in attempting to preserve the continuity of the regime. But the fracture ruling class and more importantly – the race by all parties and elites in distancing themselves from the ruling mullahs to assure their survivability and legitimacy to rule will make this an impractical political matter. In fact, it will power more winds of discontent and political disarray that can undermine the regime’s existence. The Sepah, on the other hand, is most likely to play a significant role in the aftermath of Khamenei’s death. It has consistently gained the upper hand in all walks of life from security apparatus to economic domain. Also, in Iran’s foreign policy where it has quietly paid a hefty price by putting boots on the ground in Syria, Iraq, and Lebanon thus proving to be the regime’s direct and indispensable foreign policy arm in the Persian Gulf and Middle East region. Earlier this year, a very high-profile Iranian delegation visited Turkey on August 15, 2017, to discuss a whole range of mutual regional and national security issues. It was not a coincidence that the delegation was led by General Mohammad Hussein Bagheri, the chief of Iranian Armed Forces a veteran of the regime from Iran-Iraq war. The case of Zimbabwe’s political development and the Army’s intervention in many ways can be a similar blueprint as to what may follow in post old guard Iran. The question that should be asked briefly in Zimbabwe’s self-declared “Bloodless coup d’état” case is: Who, Why and How the coup d’état was organized and implemented? This can shed manifestly a better light on its similar utility to Iran’s current sociopolitical and military situation. Thus in the case of Zimbabwe, it could safely be assumed that: Robert Mugabe’s political influence had been diminished in the daily life of the country and was, in fact, manipulated by his wife and his opportunistic circle of protégés. The economic situation had and shall for some time continue to worsen to the point of meltdown. Faced with a real threat for a potential turmoil in the very short to medium term, with or without a politically impotent Mugabe, the central circle of politically expedient elite’s must have organized the coup and convinced the Army to step in to save the day. In the aftermath of the coup, Military spokesman Maj Gen SB Moyo had announced: “Firstly we wish to assure our nation, His Excellency, the president of the Republic of Zimbabwe and commander in chief of the Zimbabwe Defense Forces, comrade R G Mugabe and his family, are safe and sound and their security is guaranteed. We are only targeting criminals around him who are committing crimes that are causing social and economic suffering in the country in order to bring them to justice. As soon as we have accomplished our mission we expect that the situation will return to normalcy. To the civil servants, as you are aware there is a plan by the same individuals to influence the current purging which is taking place in the political sphere. To the civil service, we are against that act of injustice and we intend to protect every one of you against that. To the judiciary, the measures underway are intended to ensure that as an independent arm of the state you are +worker=12 pack_row=1953 ntok=1024 reason=top_token_frac>=0.080(frac=0.119,count=122,token=,) text=An important consideration of China’s energy subsidy reform is to address deteriorating outdoor air conditions; further, environmental concerns and externalities of energy consumption were raised as part of the G20 fossil fuel subsidy peer review between China and US. Recent reforms tend to be better designed, drawing on lessons from past reforms and best practices. Many of these reforms have built on the six key ingredients for successful energy subsidy reform (Clements et al. 2013) and very few reforms involved only simple one-time price increases. A comprehensive communication campaign has been widely adopted as part of the reform strategy (Angola, Egypt, and Ukraine); some countries implemented automatic pricing mechanisms or liberalised energy prices to prevent the return of energy subsidies (under consideration in Bahrain, China, Cote d’Ivoire, India, Indonesia, Jordan, Madagascar, Mexico, Oman, Thailand, Tunisia, Ukraine, and United Arab Emirates); gradual and phased price increases were adopted by many countries (Algeria, Angola, Bahrain, Egypt, Jordan, Kuwait, Mozambique, Oman, Saudi Arabia, and Tunisia); and many introduced measures to mitigate the impact on the poor, strengthen the social safety net, or invest in health and education spending (Algeria, Angola, Egypt, Jordan, Morocco, Pakistan, Saudi Arabia, Sudan, Tunisia, Ukraine, and Yemen). In addition, some oil-exporting countries have considered energy subsidy reform as part of a broader economic reform to reduce their oil dependency (Saudi Arabia). A key concern is whether subsidies will re-emerge once international prices start to increase. On this front, there are some encouraging signs, but questions remain over the extent to which these reforms can be sustained. Not all the declines in international energy prices have passed through to domestic prices in many developing economies and, as a result, energy subsidies have declined. Reforms that are driven by long-term factors – such as environmental concerns – are likely to endure since these factors will not disappear in the near future. In addition, many recent reforms have been better designed to address their social and economic impacts and therefore are less likely to be reversed. On the other hand, reforms that are mainly driven by fiscal imbalances may not last as these conditions are temporary unless they are accompanied by deeper reform measures, such as adoption of an automatic fuel pricing mechanism, or even liberalisation. There has also been limited progress in advanced economies in bringing their energy prices to efficient levels. Authors’ note: The views expressed herein are those of the author and should not be attributed to the IMF, its Executive Board, or its management. References Boersma, T and S Griffiths (2016), “Reforming energy subsidies initial lessons from the United Arab Emirates”, The Brookings Institution. Coady, D, I Parry, L Sears and B Shang (2017), “How large are global fossil fuel subsidies?”, World Development, 91: 11-27. Coady, D, V Flamini and L Sears (2015), “The unequal benefits of fuel subsidies revisited: Evidence for developing countries”, Chapter 14 in B Clements, R de Mooij, S Gupta, and M Keen (eds), Inequality and Fiscal Policy, International Monetary Fund. Clarke, K (2015), “Diesel subsidy reform in India: Lessons learned”, The International Institute for Sustainable Development. Clements, B, D Coady, S Fabrizio, S Gupta, T S Coleridge Alleyne, C A Sdralevich, (2013), Energy Subsidy Reform: Lessons and Implications, International Monetary Fund, Washington DC. IEA (2016), “World Energy Outlook 2016”, International Energy Agency, Paris. Sivaram, V and J M Harris (2016), “Sustaining fuel subsidy reform”, Discussion Paper, Council on Foreign Relations. Endnotes [1] These include, to the best of our knowledge, Algeria, Angola, Argentina, Bahrain, Cameroon, Chile, China, Cote D’Ivoire, Ecuador, Egypt, France, Gabon, Ghana, India, Indonesia, Iran, Iraq, Jordan, Kazakhstan, Korea, Kuwait, Madagascar, Mauritania, Mozambique, Malaysia, Mexico, Morocco, Nigeria, Oman, Portugal, Qatar, Saudi Arabia, South Africa, Sudan, Thailand, Trinidad & Tobago, Tunisia, Ukraine, United Arab Emirates, Venezuela, and Yemen. CLOSE Mars Petcare employees can bring dogs to work every day Brad Schmitt / The Tennessean +worker=12 pack_row=1964 ntok=1024 reason=top_token_frac>=0.080(frac=0.080,count=82,token=) text=was tithing. Petitioner has been a member of the Church of Jesus Christ of Latter-Day Saints (Church) his entire life and has regularly contributed 10% of his monthly income to the Church. Petitioner is actively involved in the Church and holds a position as a shift coordinator in the Church's Manhattan Temple. Additionally, petitioner is a stake scouting coordinator for the Church and is responsible for overseeing six scout troops in different congregations in New Jersey. Petitioner was not compensated by the Church for his shift coordinator or stake scouting coordinator responsibilities. The Mormons take tithing very seriously. They are very well organized about it. Members are supposed to meet with their bishop for a tithing settlement. Here is a training session on what is supposed to happen in a tithing settlement. At the end the bishop will mark you as a full tithe payer - or not. If you are not a full tithe payer you cannot be admitted to the temple, much less hold offices. (The offices are unpaid, which has some relevance). Mr. Thompson had a letter from his bishop explaining this to the Tax Court. The tithing rule is so strict that some have argued that Mormons should not be able to deduct their tithes as charitable contributions, since there is, in effect, a quid-pro-quo. That argument has not gone anywhere. Mr. Thompson argued that the tithe was a necessary expense since it was required to hold his church offices. That argument might have worked if he was a minister, who was required to tithe as a a condition of his paid employment. Petitioner argues that the settlement officer's classification of his tithing as a conditional expense violates the Free Exercise Clause of the First Amendment because if he is not able to tithe then his Church will require him to resign his ministerial positions with the Church. Petitioner contends that the settlement officer's classification of petitioner's tithe as a conditional expense is tantamount to the settlement officer deciding who can be a minister in petitioner's Church. The Court was not buying that argument: However, petitioner overlooks the fact that it is his Church who is requiring him to resign his positions if he does not tithe. The settlement officer did not require petitioner to resign his positions nor did she pressure the Church to require petitioner to resign. The Free Exercise Clause prohibits the Government from interfering in a church's selection of its ministers. Laws of general applicability that require persons to meet certain general requirements of citizenship, such as paying taxes, cannot be avoided by the fact that they indirectly make it more difficult to fulfill a purely religious duty, such as a member tithing a certain amount to his church or making a pilgrimage to a shrine in a foreign country. When it comes to religious matters I like to consult my blogging buddy, Reverend William Thornton whose blog on Southern Baptist issues is temporarily dormant. Southern Baptists also talk about tithing, although they are not nearly as organized about it as the Mormons. I asked him if he thought it made sense for somebody to hold back on paying back taxes to be able to tithe. He wrote that he didn't think tithing should affect somebody's bill to the government. Are there any religious leaders out there who think otherwise ? You can follow me on twitter @peterreillycpa. Afternote I am rather pleased with the debate that has broken out in the comments section of this piece. It shows how taxes impinge on many areas of life. I have changed the "vest-pocketed" articles to include a couple that might be relevant to the turn the discussion has taken. Europeans may browse the Internet without fear of infringing copyrights, as the EU Court of Justice ruled Thursday in a decision that ends a four-year legal battle threatening the open Internet. It was the European top court's second wide-ranging cyber ruling in less than a month. The court ruled May 13 that Europeans had a so-called "right to be forgotten" requiring Google to delete "inadequate" and "irrelevant" data upon requests from the public. That decision is spurring thousands of removal requests. In this week's case, the court slapped down the Newspaper Licensing +worker=0 pack_row=1900 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=no contact with the victim. But Tomberlin will not have to register as a sex offender. That's because the judge said he has no prior criminal history and is not a danger to others. Read more top trending stories on wsoctv.com: 2019 Cox Media Group. "It's official the Ice Rink Canary Wharf is the best ice rink in London." - Qype Ice Rink Canary Wharf Get your skates on, Ice Rink Canary Wharf has returned to Canada Square Park for 15 magical weeks of ice skating beneath the twinkling lights. Open seven days a week, it's the perfect place to enjoy one of London's most loved winter traditions. Take a turn on the ice, skating around the main 1200 sq m rink. If you want to eat, drink and shop all in one go, Canary Wharf is the spot. Stay close to the action at the rink-side bar, or choose from the array of restaurants, bars, and shops surrounding the ice rink. And it's not just during Christmas that you can take a spin on the ice, Ice Rink Canary Wharf opens seven days a week from November 2018 through to February 2019. The U.S. military has begun providing Kurdish elements of the Syrian Democratic Forces with equipment and weapons, according to a new report. The provisions are aimed at helping Kurds in the SDF fight the Islamic State in Iraq and Syria (ISIS), NBC News reported Tuesday. NBC confirmed the aid with two U.S. defense officials, one of whom noted that America began giving the tools in the past 24 hours. ADVERTISEMENT Neither of NBC’s sources provided details on what equipment the U.S. is sending to SDF Kurds or how the items are being delivered. Turkish President Recep Tayyip Erdoan earlier this month strongly criticized President Trump’s decision to arm Syrian Kurds in the fight against ISIS. Turkey considers the SDF Kurds to be terrorists and an extension of outlawed Kurdish insurgents within its borders. “I hope very much that this mistake will be reversed immediately,” he said, according to Foreign Policy. “We want to believe that our allies would prefer [to] be side by side with ourselves rather than with the terror groups.” U.S. officials announced earlier this month that Trump had signed off on a plan “to equip Kurdish elements of the Syrian Democratic Forces” in the fight to retake the Syrian city of Raqqa from ISIS. “The SDF, partnered with enabling support from U.S. and coalition forces, are the only force on the ground that can successfully seize Raqqa in the near future,” Pentagon spokeswoman Dana White said in a statement. NBC earlier this month reported that some of the items headed to SDF Kurds include ammunition, armor, bulldozers, communication gear, engineering equipment and rifles. The SDF is a coalition of Arab and Kurd fighters in Syria that has been working to retake Raqqa, ISIS’s de facto capital since 2014. Steve Schmidt, a Republican strategist and former campaign adviser to Sen. John McCain, tore into GOP leadership in the wake of President Barack Obama's victory on Tuesday, urging them to speak out more aggressively against the most extreme voices in the party. Appearing on MSNBC, Schmidt referenced a recent Twitter tirade by Donald Trump as evidence that something needs to be done about toning down the rhetoric from certain elements of the GOP. "Now, people calling for revolution and these extreme statements -- when I talk about a civil war in the Republican Party, what I mean is, it's time for Republican elected leaders to stand up and to repudiate this nonsense, and to repudiate it directly," he said. "There has been a culture of fear and intimidation, that you are not a real conservative if you won't, you know, if you won't, you know, stand -- if you stand up to these extreme statements, whether it's Rush Limbaugh calling that young lady a slut or a hundred other examples over the last four years." Controversial statements by Republican candidates became devastating campaign issues in a number of races this year. Senate elections in Missouri and Indiana in particular were rocked when the GOP nominees made eyebrow-raising remarks about rape. Missouri Rep. Todd Akin and Indiana state +worker=4 pack_row=1913 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=gown, and it seems Tommy may have just bumped himself up to the top of that shortlist of names. What do you think about Hilfiger’s statement? Do you agree with him or Theallet? Sound off below! OHSU introduced its popular free bike valet program in 2011 (Photo J. Maus/BikePortland) Oregon Health and Science University (OHSU) released its Bike Program Report for 2011, including results from their member survey and an update on their online trip log. As John Landolfe, OHSU’s Transportation Coordinator, says at the beginning of the report, “2011 was a banner year for biking at Oregon Health & Science University.” He continues, “We counted more bikes than ever on campus, marked one year of operation for our web application, test ran a popular bike valet, and the American League of Bicyclists rated us as a Gold Bike Friendly Business.” Growth in the number of people on bikes comes from a number of factors including the bike valet pilot program, the closure of Sam Jackson Road, and more frequent incentive payouts thanks to a new online trip log. OHSU’s rider survey also provides an interesting glimpse into why people ride and what’s keeping them from riding more. Nearly half of people responding to the survey indicated that their primary reason for riding a bike is “health” with the second and third most common motivations being “time” and “money”. Helping the environment, which people often assume is a big motivator for riding a bike, was the least cited primary reason for riding. (Source: OSHU Bike Program 2011 Report) So what’s keeping people from riding more? Respondents said the top challenge faced when riding a bike near OHSU was “road safety” so it’s not surprising that almost half of the 280 people surveyed said that “safer streets” would encourage them to ride more often. (Source: OSHU Bike Program 2011 Report) (Source: OSHU Bike Program 2011 Report) It will be interesting to compare these numbers to next year’s results as OHSU builds on the success of its bicycle valet pilot program and as bicycle access to the south waterfront continues to improve. You can see the full report (in a PDF) for yourself here. Do you ride your bicycle to OHSU or around the south waterfront? Does the survey accurately represent your motives for biking? Tell us below in the comments. UPDATE: Landolfe highlighted one more interesting piece of data in the comments. He writes (emphasis mine): The numbers I find personally most interesting are the overlayed trends on page 5...What we find is that the trips trend upward over the year but correlate most closely to temperature (and not rain or other events). Basically, for every degree of temperature, you’ll find a fraction of bicyclists who say “ok, 43 degrees is my threshold” or “68 degrees is when I take my bike out of storage.” So whatever resources we provide & barriers we remove may not change people’s habits day by day but do increase & sustain ridership over the long term. If you’re looking to get more people riding at your workplace, consider giving em gloves. UPDATE: Landolfe has provided additional context behind the question regarding what motivates people to ride: The original question on motives was meant to tease out the largest possible themes. Health was actually written “physical/mental health” in the survey. I would presume a significant number of people citing health were thinking mental health–and fun in particular. Front Page ohsu GSN talks to Imma Battaglia, just elected as a Rome city councillor, who angered Pope John Paul II in 2000 by hosting a 'weird' World Pride For the first time in history, an openly lesbian activist has become a local councillor in Rome, the city of the Holy See. And she wants to unite the LGBT population of the city to make the eternal city a gay capital in the style of London, New York or Berlin. Imma Battaglia, 53, has been elected for the Sinistra, Ecologia e Libert party, led by gay Puglia governor Nichi Vendola. Battaglia organized the first official Italian pride in 1994. And she was also in charge of the World Pride 2000, organized in Rome in the year of the Catholic Jubilee. The pride was a success, with over one million people in the streets. Battaglia shouted from the stage: ‘Siamo un milione! +worker=7 pack_row=2007 ntok=1024 reason=sentence_count<2(count=0) text=escaped.[7] Habitat [ edit ] Tamias sibiricus near Lake Kuyguk The Siberian chipmunk can survive in a variety of habitats and conditions.[4] They are usually found in coniferous forests, stony areas within forests and mountains, habitats filled with shrub, along waterways or roads, or other small patches of agricultural land.[4][5] In Europe, the introduced populations usually live in deciduous forests, mixed deciduous and coniferous forests, or urban areas with greenery.[4][5] Tamias sibiricus is able to survive in various environmental conditions, anywhere from 29°N to 69°N and -65 °C to 30 °C.[5] However, this species has a low ability of dispersal, and since they are mainly introduced into woody forests or urban areas with greenery, they have less potential to be naturally dispersed to other regions.[5] Also they have trouble overcoming man-made and naturally occurring obstacles, like roads or swamps.[5] The Siberian chipmunk lives in loose colonies, where every individual has its own territory.[8] The territory ranges from 700 to 4000 m and is larger for females than males and is also larger in autumn than spring.[4] The Siberian chipmunk marks its territory with urine and oral glands inside of its cheeks.[4] This method illustrates one way in which this species communicates with one another.[8] Behavior [ edit ] Siberian chipmunks usually live solitary lives, but during the winter they create a burrow, which they often share with another chipmunk.[4][8] Its burrow, which can be 2.5 m long and 1.5 m deep, consists of a nest chamber, several storage chambers and chambers for the waste.[4][8] During this winter season, these chipmunks store 3–4 kg of food in order to survive underground until April or May.[9] In addition to the pairing off during hibernation, they also use a complex voice communication system to interact.[9] They have two vocal sounds, a fast, sharp sound for when they are frightened and a deep croak sound that is thought to be used for mating.[6][9] Reproduction [ edit ] While most chipmunks and squirrels are promiscuous in their mating routines, little is known about the mating habits of the Siberian chipmunk.[6] It is known that they are iteroparous, viviparous, and their breeding season usually occurs after hibernation in mid April.[6] They tend to breed only once or twice a year, and the number of offspring varies from 3 to 8.[9] The young are born blind and naked, and they weigh between 3-5 grams.[5] After the 28- to 35-day gestation period, the offspring open their eyes about 20 to 25 days after birth.[4][5] The females are responsible for caring for the young, and they teach them how to forage around 6 weeks.[6] Then the offspring complete the weaning stage around 7 weeks, and they reach the independent stage around 8 weeks.[4][6] Adult body mass is reached at around 3 to 4 months, and by 9 months, both the male and the female reach sexual maturity.[5][9] Diet [ edit ] Siberian chipmunks are omnivores that store or cache food.[4][6] Normally, they eat Siberian pine seeds, along with different deciduous and coniferous tree seeds.[4] In addition to seeds, they eat herb roots, insects, mollusks, birds, reptiles, grains, fruit, and fungus.[6] Ecosystem roles [ edit ] Siberian chipmunks are essential food sources for other animals, such as diurnal raptors, weasels, and small cats.[6] Other known predators include hawks, owls, and foxes.[7] They evade being preyed upon by these animals by being alert, hiding in their burrows, and using their camouflaged fur to blend in with surroundings.[6] They distribute seeds and fungal spores, and other animals feed off their stored food.[6] Burunduk fur-skins Impact +worker=1 pack_row=1958 ntok=1024 reason=top_token_frac>=0.080(frac=0.080,count=82,token=) text=s Conservative Party to form any meaningful ideological base as much as his smiling, youthful, celebaby , selfie-talking, bumpkin persona refueling nostalgic sentiment. However, Justin himself frames the win over Harper's Conservatives in terms of an ideological shift in governmental policy that is simply not there or only to a very superficial degree — the Canadian equivalent to Obama's empty 'change' rhetoric.Some of the apparent similarities between JT and Trump have been dully pointed out. However, while I maintain that Trump has come to represent the contemporary Zeitgeist , Trudeau has come to represent history repeating itself merely as farce. Junior is not simply the shadow of his father, but his shade he just does not know it. When papa Pierre broke protocol and normalized relations with Cuba and Castro, it was seen in the context of the times as a heroic and defiant gesture, the radical Left was in the ascendant and Pierre was just one icon of its Zeitgeist. However, when Junior unequivocally positively eulogized the former communist dictator, he was lampooned by the same media that usually fawns over him, and the hashtag #Trudeuaeulogies became a widely popular treading topic — memorable for me because it was the day that I finally won the internet, that is with my own Trudeaueulogy:Trudeau's glib blunder sparked a media storm backlash; Cuban-Americans like Marco Rubio tweeted out in condemnation of the Prime Minister's radical partisan eulogizing, asking if it was a joke. Trudeau effectively whitewashed the illiberal atrocities of Castro's regime, sending a wave of condemnation his way — a laughingstock ensued.Part of the reason for Justin's blunder is because he is living in the past, he is the echo of his father's legacy of the 1960s and the cultural Marxist hegemony of yesteryear, seemingly unaware that what his father stood against has become the system and the establishment utterly — that his 'rebel sell' image only worked against a stuffy "old stock" party bureaucrat like Harper. The jig is up, the tide has turned and JT is lagging behind, with a plethora of alt-lite media and personalities taking the fore against a radical Leftism that has reached the end of its rope.This is an attempt to corral together a compendium of Justin Trudeau's most blatant chronic idiocies and twisted contradictory SJW logic.Canada's Prime Minister Justin Trudeau delivered remarks and participated in a Q&A session at Elementary Teachers of Toronto Federation Day 2016 held on Friday, December 2, 2016 at Toronto Congress Centre.Responding to a question about how Justin Trudeau 'checks his privilege:'This is typical of limousine liberal's political usage of "oppressed groups" to further obscure their own elitism, which is based on wealth and class, rather than the groveling of minority identity politics. How about Justin Trudeau is lucky, not because he was born a "straight White male," but because he were born Justin Trudeau! Trudeau was "given power and a voice" that he "did nothing to earn," and he "did nothing to deserve" because he was born a Trudeau, not because he was born a SWM!He is privileged because he never had to clean a public toilet, or serve tables, or wash dishes to pay his way through school and he never had to keep doing those McJobs long after he graduated because there was no place for him even with a degree. He never suffered from crippling student debts, he never had to compete with favored minority groups over a dwindling pool of decent jobs, he never had to worry about whether he could make the rent, or afford a vehicle. Trudeau has no idea what it is like being a member of the White working poor, who are then scolded by limousine liberals like him that they are part of a "privileged" class — Trudeau was born lucky because he was born rich and famous, not because he was born a SWM. Instead the weak Liberal apparatchiks rallied behind him because of his scion name recognition.In order to virtue signal his inclusivity, Trudeau's first +worker=14 pack_row=1981 ntok=1024 reason=sentence_count<2(count=1) text=d load balancing of game updates, ensuring the game works accurately under high load, while still running smoothly Simplified cosmetic Fog of War rendering now updates more efficiently Refactored Water and Lava ambient sounds and clarified culling – this will reduce the number of sounds attached to Water and Lava tiles and aid performance slightly Audio Improvements Added over sixty new narrator lines for the following: Dungeon Cores being destroyed Minions being rallied for too long Miscellaneous Dynamic Tutorial System lines Artefact of Mana usage UI Improvements When attempting to join a multiplayer game a new dialog will appear displaying “Connecting” until the game successfully connects or encounters a connection error AI Improvements Units in combat would previously switch their target regularly in order to use their abilities against the most effective target, however this could cause confusion in the swirling melee. Units will now switch their combat targets less often, preferring to prioritise their current target over others except in exceptional circumstances Map Editor Improvements It is now possible to change the faction of Shrines and Gateways using the Paint Faction tool Miscellaneous Death alerts will no longer play when disposable units perish (Wraiths, Ghouls, Frost Weavers, etc.) ( Public Ticket: 1060 ) Several small fixes to in-game text Updated several Skirmish and Sandbox map descriptions It is now possible to manually specify an IP address to join via Multiplayer (in the event of games not showing up due to adapter settings or if you wish to connect via tunnel you can now use this feature) Bug Fixes Fixed a number of issues which could cause crashes in Multiplayer Fixed a rare issue which would cause some custom maps to be unloadable Fixed a bug in the Prison tooltip which would cause it to incorrectly display the number of prisoners held ( Public Ticket: 1062 ) Fixed an issue where Titans would not be available in the Heart of Gold Home Realm Sappers will no longer dramatically pause before playing their death animation, since Underlords don’t appreciate amateur dramatics Fixed an issue where the Oculus would not take damage from the Lightning spell ( Public Ticket: 1091 ) Fixed an issue where Glacial Doors which were pre-placed and locked in the Map Editor would incorrectly appear to be open, even though they were logically closed ( Public Ticket: 943 ) The Stairway to Heaven Achievement in Heart of Gold level 1 is now correctly achievable ( Public Ticket: 1042 ) Fixed an issue where locked doors on maps created in the Map Editor would would render only the lock if viewed through the initial Fog of War Fixed an issue where a Stone Bridge on the Skirmish map “Triad” had incorrect health values and under which the ground would be black Sappers which are turned into golden statues will no longer lock mana for the owning player ( Public Ticket: 1138 ) Fixed an issue where units which were classed as “hover” units could become stuck in Chasms Fixed an issue in Multiplayer where the client would no longer be able to produce potions in an Alchemy Lab cauldron if they had previously cancelled a potion in that cauldron Fixed an issue where using the Pivot mirror tool in the Map Editor could cause unusual behaviours ( Public Ticket: 1039 ) Fixed several issues with the Siege Doors on main campaign level 13, such as units becoming stuck behind them and the incorrect display of whether the door was open ( Public Ticket: 1101 ) Titan Summoning Stones will now create the correct alert when attacked Fixed a bug where Haste potions would increase the work speed of affected units (should only affect movement speed) Clicking the back button in a Multiplayer lobby now correctly takes you back to the game list rather than the main menu Fixed a bug where the Blood Money spell did not work on Heart of Gold bosses in the Home Realm Fixed a bug where the player could not dismiss a Titan in any campaign level with three slaps (Heart of Gold Level 4 still does not allow it as doing so would result in mission failure) The Aloha Worker will now correctly make sounds for digging, walking and running Fixed an issue with the display of the Kickstarter death animation Dungeon Cores will now cull at the correct point off the edge of the screen Mandalf can no longer be converted if the Torture Rack is in Execution mode (Heart of Gold level 1) Fixed an issue where minions could die in the Arena in the Home Realm or from loaded save games Fixed an issue where slider values in the options menu were not updated +worker=10 pack_row=2049 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=system from Hollywood or the European industry, and hopefully someday we can change the Japanese system little by little,” he said. “I think I will continue working here and learn more, and bring it back to Japan someday. That’s my hope.” Sanada said that though he’s acted in the industry for a while, he still considers himself a student who is continually learning from his peers. “I’ve worked with a lot of other great, charming, older actors and directors and I see them and I think, ’Oh my gosh. I’m just a student!’ but working with them is the best thing to refresh my craft,” Sanada said. “I love that part.” With “Life” premiering this week and having just wrapped up filming for his next film, “The Catcher Was a Spy,” Sanada plans on exploring different characters as long as there is an audience watching. “The audience’s reaction is my energy,” Sanada said. “If they’re enjoying themselves and have a good reaction then I think ‘This is it. I’ve tried my best for this moment so I can feel that.’ Without an audience, our job as actors would be nothing. That’s why I try to create a different character every time and I think it’s refreshing for the audience — even those who have watched me for over 40 years to see that I have a different side.” Follow NBC Asian America on Facebook, Twitter, Instagram and Tumblr. James Bond doesn't work for free. He isn't just some gun for hire. He has standards, and values, and if you want him to use your smartphone in a movie you better come prepared with "a solid financial proposal." Because if Bond doesn't think your products are very good... Well, let's just say $5 million dollars will get him to hold your phone, but those are just table stakes. $5 million just to hold a smartphone No, this isn't advertising fan fic — this is how the product placement negotiations went down for the upcoming Bond-flick Spectre, at least, according to emails leaked from the Sony hack. Although we already knew that Daniel Craig was in the running for a $5 million fee just to be photographed holding Sony's flagship Xperia Z4, another email — recently flagged up by Wikileaks — has detailed exactly what the filmmakers' objections were. As Andrew Gumpert, president of "worldwide business affairs" at Columbia, notes, when it comes to product placement, Bond isn't just about the money: BEYOND the $$ factor, there is, as you may know, a CREATIVE factor whereby [director Sam Mendes] and Daniel [Craig] don’t like the Sony phone for the film (the thinking, subjectively/objectively is that James Bond only uses the "best," and in their minds, the Sony phone is not the "best"). The email is dated to October 2014, and also mentions the possibility of swapping in a Samsung device for Sony's. While Sony had reportedly budgeted an $18 million "advertising commitment" for the next Bond film, Samsung was apparently willing to up this figure to $50 million. A previous email also floated the idea of sidestepping Craig altogether and bringing in Q — aka British actor Ben Whishaw — for the publicity instead. $5M for Bond, but just $1M for Q "What if we take the Daniel Craig fee and convince Sony just to pay Barbara directly [$4 million] for a placement fee," writes Columbia Pictures executive George Leon. "NO Daniel this time. We walk from him. The remaining [$1 million] (or LESS!) of this budget can be used to hire "Q" instead?" Unfortunately, there doesn't seem to be anything else in the emails revealing which smartphone brand Bond does decide is "the best." He certainly has a history with Sony as he uses an Xperia T handset in Skyfall, but we all know the world's greatest spy can be a bit fickle. And if he doesn't think your smartphone is "subjectively / objectively" the best, well, can you really argue with someone with a license to kill? Please donate to the Ron Paul Institute Copyright 2017 by RonPaul Institute. Permission to reprint in whole or in part is gladly granted, provided full credit and a live link are given. Now that the defeat of ISIS in Syria appears imminent, with the Syrian army clearing out some of the last ISIS strongholds in the east, Washington +worker=3 pack_row=2049 ntok=1024 reason=top_token_frac>=0.080(frac=0.081,count=83,token=) text=ae, is being used to help reconstruct the trajectory of the lander to its final landing site on Comet 67P/Churyumov-Gerasimenko. As we described in an earlier blog post, magnetic fields can be used for this task because both the lander and the orbiter generate small magnetic fields of their own due to the electronic circuits inside the spacecraft. These magnetic fields create perturbations in the data that are normally removed in order to analyse the purely natural magnetic fields from the comet and the solar wind. But during the descent of the lander, these perturbations were measured in order to monitor what was happening to the lander as it slowly dropped towards the surface of 67P/C-G. “Any motion of Philae in a magnetic field – even if it is small – can be seen by field changes in the measured magnetic field direction,” explains ROMAP co-principal investigator Hans-Ulrich Auster from the Technische Universität Braunschweig, Germany. ROMAP timeline The scientists have now been able to use ROMAP data to reconstruct the chain of events that took place on 12 November as follows: – Separation was confirmed as a decay in the magnetic field perturbation as the distance between Philae and the orbiter increased; at this point the lander was spinning at a rate of about 1 rotation per 5 minutes; – The landing gear was deployed successfully, accompanied by a change in the spin rate to 1 rotation per 8.5 minutes; – The ROMAP boom was deployed successfully and a magnetic field decay was measured corresponding to the increased distance of the ROMAP sensor with respect to its original position on the lander; – During the seven-hour descent, all measurements were nominal, and ROMAP recorded the first touchdown at 15:34:04 GMT spacecraft time (the signal arrived on Earth just over 28 minutes later, and was confirmed at 16:03 GMT); – After the first touchdown, the spin rate started increasing. As the lander bounced off the surface, the control electronics of the flywheel were turned off and during the following 40 minutes of flight, the flywheel transferred its angular momentum to Philae. After this time, the lander was now spinning at a rate of about 1 rotation per 13 seconds; – At 16:20 GMT spacecraft time the lander is thought to have collided with a surface feature, a crater rim, for example. “It was not a touchdown like the first one, because there was no signature of a vertical deceleration due to a slight dipping of our magnetometer boom as measured during the first and also the final touchdown,” says Hans-Ulrich. “We think that Philae probably touched a surface with one leg only – perhaps grazing a crater rim – and after that the lander was tumbling. We did not see a simple rotation about the lander’s z-axis anymore, it was a much more complex motion with a strong signal in the magnetic field measurement.” – Following this event, the main rotation period had decreased slightly to 1 rotation per 24 seconds; – At 17:25:26 GMT Philae touched the surface again, initially with just one foot but then all three, giving the characteristic touchdown signal; – At 17:31:17 GMT, after travelling probably a few more metres, Philae found its final parking position on three feet. Understanding the dynamic power spectral density plot The plot shown above describes the intermediate ‘touch’ that Philae experienced between the first and second touchdowns. The three panels represent, from top to bottom, the x, y and z components of the lander, respectively. The colour denotes the power that is carried by the frequency. For example, red is more “energetic” than blue. The thin red line in the x and y components traces the increase in frequency (seen as the orange patches) as the spin down of the flywheel caused the lander to spin up, preserving momentum. If there was no contact with the ground this momentum should have been preserved indefinitely (there is almost no atmosphere to cause significant friction) and the frequencies should have remained almost constant after the flywheel transferred all of its energy to the lander. (Note that because the flywheel was off and the moments of inertia of Philae do not completely coincide with the lander x,y,z axis, a slight decay of this rotation frequency can be seen at about 16:15 (GMT spacecraft time), which could indicate a small tilting of the +worker=6 pack_row=2062 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=after Prime Minister Malcolm Turnbull participated in a ceremonial signing of the agreement April 22 at U.N. headquarters in New York City. Signers from 175 nations participated in the ceremony, including U.S. Secretary of State John F. Kerry. Mr. Ban said an accelerated ratification for the agreement would “create incentives for early implementation of nationally determined contributions and build support within markets and societies for increased climate ambition.” “As Ban Ki-moon’s tenure as U.N. secretary-general draws to a close, he is no doubt thinking about his legacy, how history will remember him,” said Eric Worrall in a Monday post on the skeptics’ website Watts Up With That. “Given the accelerating collapse of political climate enthusiasm across the world, my prediction is Ban Ki-moon will be remembered as the U.N. Secretary General who presided over the downfall of the green movement,” Mr. Worrall said. Copyright 2019 The Washington Times, LLC. Click here for reprint permission. The Cuba Democracy PAC has given hundreds of thousands in political contributions to Democrats and Republicans in Congress as part of an effort to maintain stringent trade and travel restrictions with Cuba. The group in recent years has focused on outreach efforts to the Democratic freshman classes of 2004, 2006 and 2008. [T]he region’s political landscape has changed. Most obviously, the United States now has in Barack Obama a president who is as widely admired in Latin America as Mr Bush was disliked... The most divisive issue concerns the one country that is not invited. Latin America is now united in wanting to end the diplomatic isolation of Cuba, and many would like the United States to lift its long-standing economic embargo against the island. That is because a transition of sorts is under way in Cuba, with Ral Castro replacing his brother Fidel as president, even if there are no signs that this change will be matched by democracy supplanting communism. It is also because Latin America’s many left-of-centre governments, to varying degrees, see friendship with Cuba as an issue of symbolic importance. But for the United States, Cuba is a matter of domestic politics (as are nearly all the other issues that matter to Latin Americans, such as drugs and immigration). Mr Obama was poised to announce, ahead of the summit, the scrapping of curbs imposed by Mr Bush on visits and remittances to the island by Cuban-Americans. He may also allow American companies to sell Cuba communications gear, such as an undersea fibre-optic cable, according to an administration official. Many Americans would like him to go further. Bills introduced last month in both houses of the United States Congress with strong bipartisan support would allow all Americans to travel to Cuba. Another would ease food sales to Cuba, already allowed under cumbersome conditions. But most supporters of these bills stop short of wanting to scrap the embargo altogether while Cuba still lacks political and economic freedoms. And an influential minority in the Democratic party opposes any change in policy. “For 50 years we have been trying to change the Cuban government, the Cuban regime,” said the foundation’s president, Francisco J. Hernandez, a veteran of the Bay of Pigs invasion in April 1961. “At the present time, what we have to do is change the emphasis to the Cuban people — because they are going to be the ones who change things in Cuba.” Earlier today we looked at some of the ways Obama's agenda for change is bumping heads with entrenched vested interests that have powerful and lucrative stakes in the-- and congressional shills who will stand with them in return for the immense sums in legalized bribes funneled into their careers. This week the push towards normalizing relations with Cuba is meeting just this kind of resistance.One Political Action Committee, the U.S.-Cuba Democracy PAC, a right wing throwback to the days of knee-jerk Republican catering to anti-Castro fanatics in Florida, is on the warpath because members of the Congressional Black Caucus had the temerity to travel to Cuba, meet with Castro and called for a new policy . Anti-Castro extremists at the US-Cuba Democracy PAC, who would prefer another Bay of Pigs to an unthawing of relations, short-circuited today and attacked the CBC members who visited Cuba. They blasted Barbara Lee (D-CA), Mel Watt (D-NC), Emanuel Cleaver (D-MO), Marcia Fudge (D-OH), Mike Honda (D-CA), +worker=1 pack_row=2038 ntok=1024 reason=too_many_urls(count=3,max=2) text=and tie. Anyone with information is asked to call the Peel Regional Police 12 Division Criminal Investigations Bureau at (905) 453-2121, ext. 1233. Information may also be left anonymously by calling Peel Crime Stoppers at 1-800-222-tips (8477), or by visiting www.peelcrimestoppers.ca. County in Florida Approves Tiny House Community This Florida City Approves Tiny House Community story is a guest post by Rene’ Hardee Here is an article that ran in our local paper last week: Tiny Houses Catch Brevard County in Florida I have been working really hard to get legal approval for a Tiny House Community and it is finally happening! Please post to your newsletter! Thank you! Florida City Approves Tiny House Community Image Tim Shortt/FloridaToday “Rockledge resident Rene Hardee has been campaigning for tiny houses in her neck of the Brevard woods for the past six months. Rockledge City Council has agreed with Hardee’s idea and made a unanimous motion to move forward with new zoning regulations that would allow the creation of tiny house developments.” Learn more: http://www.floridatoday.com/story/life/home-garden/spaces/2015/06/19/tiny-houses-catch-brevard/71079722/ (when you get there you have to answer two survey questions before they let you read the story... just an FYI.) Our big thanks to Rene’ Hardee for sharing and for her hard work getting her city to approve of tiny housing! You can send this tiny house story to your friends for free using the social media and e-mail share buttons below. Thanks! If you enjoyed this story you’ll absolutely LOVE our Free Daily Tiny House Newsletter with even more! Thank you! Related Facebook Comments comments Grand Prize Andrew Napier From: Los Angeles, California • United States Andrew’s Contest Winning Entry Andrew’s Additional Contest Entry What got you interested in scoring for games? “I got interested in scoring for games early on when I started to glean an aesthetic pleasure and a distilled story from my favorite video games through the music and its ties to the visual aspect.I became very perceptive to this second layer of immersion and thought it would always be very rewarding to be able to help create such an experience.” What was your favorite part about the Game Scoring Contest? “My favorite part about the Game Scoring Contest was that it was based off of an impression and interpretation of Mike Ackerman’s concept art alone. Having to capture the art’s essence in a 30 second three-layered loop for a hypothetical game proved to be difficult, but at the same time provided the conditions for more creative freedom within the unique formal constraints of looping and layering. “ Grand Prize Package Iris 2 from iZotope Neutron Elements from iZotope 14 Minute Orchestral Recording (Basic Package) OR 7 Minute Orchestral Recording (Premium Service) from $99 Orchestra Kitchen Sink Course Bundle from Scorbit (includes all premium Scorbit content) Runner Up Guillermo Corral From: Madrid, Spain Guillermo’s Contest Entry What got you interested in scoring for games? “I’ve always been very interested in film music, I was passionate about it. And then I discovered the wonderful world of video game music. The moment I started to get interested and learn more about this was when Garry Schyman gave me a masterclass about scoring videogames. And now I’m trying to get into the film and video game music industry.” What was your favorite part about the Game Scoring Contest? “My favorite part about Game Scoring Contest was the composition moment, in which I tried to express what the image transmitted to me and the world I was transported to. Imagine how the video game would be and what effect each note implemented in the video game would have been one of the most wonderful parts. I had a great time in this contest. It was also exciting when you selected me as a finalist and even more so when you told me the final decision.” Runner Up Prize Package Iris 2 from iZotope Kitchen Sink Course Bundle from Scorbit (includes all premium Scorbit content) The Finalists A note on listening to the finalists: Each contestant was tasked with creating a 30 second piece of music, broken up into three layers. This allows for seamless integration within a video game when the intensity of game play is increased, and the music needs to follow suit. What you will hear in each of the +worker=13 pack_row=2001 ntok=1024 reason=too_many_urls(count=3,max=2) text=Governance Although global organizations like NATO and the UN won’t vanish, blockchain technology and AI could both contribute to the development of direct democracy. Blockchain and AI together can transfer big hordes of data globally, tracing e-voting procedures and displaying them publicly so that citizens can engage in real-time. Democracy Earth Foundation, an organization aspiring to “hack democracy“, is jumping on the direct democracy bandwagon. It’s waved “political intermediation” goodbye as it advocates open-source software, peer-to-peer networks, and smart contracts. The organization also hopes to fight fake identities and reclaim individual accountability in the political sphere. Challenges Remain While blockchain and AI combined have enormous disruptive potential across industries, all emerging technologies face substantial challenges. Read about the 6 major challenges facing widespread blockchain adoption and also the limitations of deep learning approaches in AI. Jenkins and Bhyve: Continuous Integration for FreeBSD by Craig Rodrigues On March 13, 2014, Craig Rodrigues gave a talk to a packed room during the monthly BAFUG meeting at Hacker Dojo. The talk discussed the progress of the effort to date, the use of BHyve VM’s in the effort, and future plans. Photo credits to Larry Maloney A team of FreeBSD developers led by Craig Rodrigues (rodrigc@freebsd.org) has formed the jenkins-admin team (jenkins-admin@freebsd.org). They have set up the Jenkins Continuous Integration system inside the FreeBSD cluster, and are building several branches of FreeBSD. The web server which lists the builds is visible at:https://jenkins.freebsd.org. The jenkins-admin team has plans to expand the use of Jenkins to build and test FreeBSD. The project status and future plans are listed at: http://wiki.freebsd.org/Jenkins. The team is also looking for FreeBSD developers who can help along with this effort to improve testing of FreeBSD. The team has made a video of this talk available on YouTube. Craig’s presentation slides can be found below. There's No Place Like Gold By Richard Daughty "The Mogambo Guru" Mar 18 2009 5:13PM www.dailyreckoning.com 03/17/09 Tampa Bay, Florida I was captivated by the Wall Street Journal headline “Bearish Big Investors Catch Gold Bug ? by Gregory Zuckerman, because I don’t ever expect to see anything favorable about gold in the WSJ since it is concerned primarily with providing information and news about stocks and bonds so that you will be motivated to constantly buy and sell stocks and bonds. So I was surprised to read where it starts out with, “Large investors, including some who anticipated deep troubles for the housing and financial sectors, have been buying gold, concerned that moves by governments world-wide to shovel money at problem areas could cripple leading currencies. ? This is exactly true! That is exactly why I am buying gold, and why smart people are buying gold and why large investors are buying gold! Well, since the WSJ is traditionally concerned with stocks and bonds and so is historically unconcerned and disdainful of gold, I figure that Mr. Zuckerman will follow that “gold bug ? news with some disparaging remark like “which only proves how stupid large investors are, since everyone knows that gold is for morons and raving lunatics like, for instance, The Mogambo, who is forever wailing about how you should be buying gold, silver and oil with your very waking breath because the Federal Reserve, which caused all of the world’s problems by their decades-old regimen of constantly over-creating money and credit which produced massive inflations in the prices of stocks, bonds, houses and size of government, is now going to make the money supply go Freaking Super-Nova (FSN) with even MORE excess creation of money and credit to accommodate the panicky, unbelievable, desperate deficit-spending plans measured in the multi-trillions of dollars by the incompetent, brain-damaged Congress and the ridiculous Obama administration comprising, as it does, the worst of the worst, and that means consumer prices are going to explode one day – say people like The Mogambo, within a year or so, and for a long, long time afterward, too. ? Although Mr, Zuckerman does not mention me directly, he says, “For years, big gold fans were fast-moving traders and so-called gold bugs, a crowd of bears ever-con +worker=2 pack_row=2109 ntok=1024 reason=too_many_urls(count=3,max=2) text=96 Elephants movement,” he said. 96 Elephants brings together world citizens, partners, thought leaders, and change makers to leverage collective influence to stop the killing of elephants, stop the trafficking, and stop the demand for ivory. Working with 195 partners including 125 zoos across 45 states, the 96 Elephants campaign has helped to ban ivory sales in New York and New Jersey and is currently supporting proposed bans in California – the largest ivory market after New York – and across the United States. TV spot: https://youtu.be/CHiQNbpE0GU Radio spot: http://bit.ly/1JqfCSL Copyright Environment News Service (ENS) 2015. All rights reserved. Society Beijing-Tianjin train tickets start online sale (Xinhua) Updated: 2011-06-11 22:00 BEIJING - The Ministry of Railways said Saturday that online sales of tickets for Beijing-Tianjin intercity trains will be launched on Sunday. The move is aimed at enhancing convenient purchases of tickets for Beijing-Tianjin intercity trains, the ministry said in a statement posted on its website. Passengers can log onto www.12306.cn, the website of China railway customer service center, to check and book train tickets. The Internet portal operates from 5 am to midnight every day. The online ticket sales system allows passengers to use four types of personal identification, including ID cards, mainland travel permits for Hong Kong and Macao residents, entry permits of Taiwan residents to the mainland, and passports, the statement said. The ministry said the online train ticket sales system will also be introduced in the Beijing-Shanghai high-speed railway, which will start operations at the end of June. That headline, “CBS Admits to Editing McCain’s Iraq Answers” in the print edition of the Washington Post sure caught my eye this morning. Pretty interesting admission, so I figured I’d post it. But, that’s not the online title. As you can see, in “The Trail,” that piece has as much more innocuous title, “McCain’s Interview on CBS.” Yes, it’s McCain’s interview on CBS, but it’s a whole lot more than that: In response to critics, led by MSNBC anchor Keith Olbermann, CBS News Senior Vice President Paul Friedman noted the full transcript and video were available online. He added in a statement: “The report was edited under extreme time constraints and one piece of tape was put in the wrong order. Fortunately, this did not in any way distort what Senator McCain was saying.” Democrats quickly seized on McCain’s statement in the interview, saying that it contained a remarkable gaffe for a politician who’s supposed to be an expert on the Iraqi conflict. As Democrats eagerly pointed out, the awakening started months before the surge in troops was announced in January of 2007. Troops did not actually get deployed until March of 2007, long after the awakening began. US Interior chief wants smaller monuments, but not at home FILE - In this July 30, 2017 file photo, U.S. Interior Secretary Ryan Zinke speaks during a news conference near Gold Butte National Monument in Bunkerville, Nev. Zinke appears to be carving out an exception for his home state from the Trump administration’s agenda to open more public lands to natural resources development. Zinke wants to curb mining in Montana outside Yellowstone National Park. He’s also recommending Trump create a new national monument on 130,000-acres of forest land in northwest Montana while shrinking monuments in several other states. (Steve Marcus/Las Vegas Sun via AP, File) /Las Vegas Sun via AP) BILLINGS, Mont. (AP) — U.S. Interior Secretary Ryan Zinke has closely followed his boss’ playbook, encouraging mining and drilling on public lands and reducing the size of national monuments that President Donald Trump called a “massive land grab” by his Democratic predecessors. Except, that is, in Montana. In Zinke’s home state, the former congressman who has long harbored higher political ambitions is recommending Trump create a new national monument out of the forests bordering Glacier National Park, to the disappointment of a company that wants to drill for natural gas there. A couple hundred miles away, where rocky bluffs line the Missouri River, he decided to leave intact a 590-square-mile (1,528-square-kilometer) monument that for 16 years has stirred the kind of impassioned local opposition that Zinke cited in justifying changes to monument +worker=11 pack_row=2155 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=of Andy Warhol, committed suicide on May 5, 2010, in Manhattan, where she worked as a curator at the Whitney Museum of American Art; she was 62. In a 2014 essay, Angell mentioned her death -- "the oceanic force and mystery of that event"—and his struggle to comprehend that "a beautiful daughter of mine, my oldest child, had ended her life."[14] Alice Angell lived in Portland, Maine and passed away from cancer on February 2, 2019,[15] and John Henry Angell lives in Portland, Oregon.[2] His second wife, Carol Rogge Angell, to whom he was married for 48 years, died on April 10, 2012, of metastatic breast cancer at the age of 73.[16] In 2014, he married Margaret Moorman, a writer and teacher.[citation needed] Bibliography [ edit ] In 2019, University of Nebraska Press will publish No Place I Would Rather Be: Roger Angell and a Life in Baseball Writing, a book about Angell's career written by Joe Bonomo. Notes [ edit ] [12] Originally published as "Down the Drain" RECOMMENDATION When It comes to ethical responsibility, If they want to be a leader in their market place, they have to change their mind and thought to workers. Let us think about employees. Employees are the group most responsible for a company's success, since a business is essentially nothing more than a collection of individuals gathered together for a common purpose and with a certain amount of infrastructure and capital. Without employees, a business literally could not exist. Profitable companies do not spontaneously form out of piles of equipment, software, and money. An important caveat, however. Companies owe an ethical responsibility to employees only insofar as the employees contribute to the success of the company. It is not unethical to fire an underperforming employee. It is also important to keep in mind that changing industry or economic conditions may force a company to do things (like lay people off) which hurt employees, but are necessary to the survival of the business The importance of ethical behavior in a business can not be over-emphasized. What a company has built in decades can simply be destroyed by a top level executive of the company in virtually no time - imagine someone high-up being caught publicly in a serious corruption, graft, favoritism, cheating or even telling lie on an important issue. Ethics are all about making the choice that is going to benefit as many people as possible in a fair manner. It is not what is likely to benefit you or feels good at a particular time but what will have you have you stand in the right stead today, tomorrow and forever. Business ethics in the workplace are what the business fraternity must strive to inculcate. The rewards of doing so will be long-lasting and for everyone to see. APPENDIX “A” (Questions and Answers) 1. What ethical responsibility do you think firms from the United States and other developed countries have in making sure their suppliers from developing countries are not badly exploiting workers? When it comes to ethical responsibility, I think they who are U.S and other developed countries have to respect their workers. Many owners can not use to their workers by exploiting workers. Using their workers, they can get a great income more than I U.S and developed countries. And they can manage their company cheaper than here. However they can not treat their workers or employers sweat their workers. Let us put ourselves in worker’s place. They are not only working for products but also they have to show their emotion and affection to owner. If they are not going to show their excessive loyalty to owner, they might be cut in their job. Managers have to recognize that workers are not slaves and they are helpers for company. 2. How do you react to the statement at the end of the case by the Indonesian manager that “If we aren’t cheap enough, customers will go to Vietnam or else where”? Many people think that the most important thing is price of product and they believe that will be control the market. However I disagree with that. When it comes to organization behavior, we have to manage for not product but people. If we can manage people who worker for us we can control the market more easily and If we concern with only price of product without people we can not success in the market world. 3. Besides the ethical, human rights issues, are there any implications in this case for the study and application of organizational behavior? Ethics is involved with moral issues and choices and deals with right and wrong behavior. A number of cultural, organizational, and external forces help determine ethical behavior. These influences, acting interdependently, serve to help identify and +worker=6 pack_row=2217 ntok=1024 reason=too_many_urls(count=3,max=2) text=Murphy’s fitness regimen. (Photo: LAUREN PETRACCA/@LaurenPetracca/ / STAFF PHOTOGRAPHER) Exercise is key to staying healthy. You don't have to be a world-class weight lifter or do one-handed pull ups, she said, just do enough so that "you are moving something and the blood is flowing in your body." Murphy laughs a lot and eats what she wants to eat, including Pizza Hut on football days, washed down with rum and cranberry juice. Every Monday, Wednesday and Friday morning, she heads to the Maplewood Y to lift weights and powerwalk. She wore a unitard with the Y logo when she crushed the competition at the World Championships. "She is so spunky, sweet and inspirational," said Lisa Greer, director of administration and member services at the Maplewood Family YMCA. "I couldn't do half the things she does." Since her victory, Murphy's been getting a lot of love at the gym. All morning, people stop to congratulate her, give her fist bumps or ask to touch her biceps. One lady gets off the step machine to tell Murphy that she is her idol. Murphy says thank you and curtseys. "They see I'm old and I'm not being pushed around in a wheelchair," she said with a laugh. "I can shovel my own snow. And I can push my car if it gets stuck in the snow... I'm almost 80 years old and I am still living life." NEWSLETTERS Get the ROC60 newsletter delivered to your inbox We're sorry, but something went wrong Rochester in 60 seconds: Get all the news you need to know in less than a minute. Please try again soon, or contact Customer Service at 1-800-790-9565. Delivery: Invalid email address Thank you! You're almost signed up for ROC60 Keep an eye out for an email to confirm your newsletter registration. More newsletters Twitter @Erica_Bryant_ Read or Share this story: http://on.rocne.ws/1rBpKDY UPDATE: 12:46pm EST — Kyle Becker at IJReview says that NBC has since purged the comments of the article since reposting it earlier today. He claims they did so after Drudge Report changed their link to the story. UPDATE: 10:46am EST — The story featured on NBC now includes the content which was previously edited out or around. UPDATE: 01:08am EST — Excuses pour in... EDITOR'S NOTE: A publishing glitch took down our story on policy cancellations under Obamacare. Republished here: http://t.co/HegN2kyvyV — NBC News (@NBCNews) October 29, 2013 Had a problem with the #Obamacare story this evening. Here's the new url: http://t.co/s8zNk2rYpD — NBC Investigations (@NBCInvestigates) October 29, 2013 UPDATE: 12:56am EST — There are edits to the new version UPDATE: 12:40am EST — Story is now back online but with a different URL ORIGINAL STORY FOLLOWS — NBC has purged the story exposing the Obama administration’s knowledge of millions of Americans losing their insurance plans from their NBC News Investigations website. NBC News has offered no explanation of this event nor have they issued a retraction or an editorial correction to the story. All we can do is speculate as to motive. It is interesting to note, the latest story on the page for NBC News Investigations is now a story about the U.S. killing terrorists linked to the Westgate Mall Tragedy. A Google Cache of the page exists here for those interested in reading the original story. (SooperMexican is responsible for the image that highlights the changes. MSPaint is no competition for his Photoshop skills) Mattematical Senior Guild Member Join Date: 22nd Dec, 2014 Posts: 479 Mattematical's Mega Mgiveaway Some of you have seen me allude, in chat or on the KoL subreddit, to a mysterious event I was planning on hosting at the end of this year. Now that December has arrived, I am happy to announce my new annual giveaway tradition! To enter, please visit this If you really don't want to install ma +worker=14 pack_row=2183 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=ensure respect for the Constitution and to ensure public confidence in law enforcement. Portland Mayor Sam Adams said the city had asked for the investigation and welcomed it. “This is a difficult situation. We are humble in the knowledge that we don’t have it all figured out,” he said. Aaron Campbell, 25, was killed by police in northeast Portland in January 2010, shot in the back with an AR15 rifle by Officer Ron Frashour, who told investigators he thought Mr. Campbell was suicidal and was reaching for a gun. Portland police later confirmed that Mr. Campbell, who reportedly was distraught over the death earlier that day of his brother, had left his gun in an apartment when police convinced him to come out. The officer later was fired for violating police policy during the incident and three other officers, Ryan Lewton, Sgt. Liani Reyna and Sgt. John Birkinbine, each received 80-hour unpaid suspensions. But the Justice Department, following an investigation, said there is not enough evidence to pursue federal civil rights charges against the Portland officers. A team of federal prosecutors said the available evidence did not establish that Officer Frashour or any other officers acted “with the deliberate and specific intent to do something the law forbids.” Under federal criminal civil rights laws, prosecutors must establish beyond a reasonable doubt that a law enforcement officer willfully deprived a person of a constitutional right, meaning with the deliberate and specific intent to do something the law forbids, a Justice Department spokeswoman said. A Multnomah County grand jury in Portland also decided there was no evidence to pursue local charges against Officer Frashour. On Tuesday, the department said officials from the Civil Rights Division, the U.S. attorney’s office in Oregon and the FBI met with the Campbell family and their representatives to inform them of the decision. “The family accepts this decision,” Mr. Campbell’s family members said in a statement. “To have them prosecuted would have served little purpose in the healing process for the family.” Family members have filed a civil lawsuit against the officers and the police bureau. Portland Police Chief Michael Reese, in a statement, said: “We can’t undo the death of Aaron Campbell, but I believe we have taken significant steps to learn from it. In this case, I believe each bureau member involved was attempting to do their best to resolve a complex situation. However, there were significant issues that were brought forth in the bureau’s internal reviews and those involved were held accountable.” Since the death, the police bureau has instituted extra training for officers who carry assault rifles like the one Officer Frashour used. Copyright 2019 The Washington Times, LLC. Click here for reprint permission. BLACKWOOD, NJ (CBS/AP) — A police “K-9” dog was killed Tuesday evening after being thrown into traffic by a robbery suspect he had chased down. Skyler Robinson, 20, was taken into custody after an overnight hunt, and a second suspect, 19-year-old Evan Scotese, was taken into custody at his home Wednesday morning. Police say the dog, a 312-year-old German Shepherd, was on duty for Gloucester Township police when they responded to a burglary call at a Chinese restaurant on East Church Street in Blackwood. The suspects made off with approximately $300 and one of them punched an employee before fleeing. After picking up the scent of Robinson, the dog, named “Schultz,” was let loose and chased him down along the shoulder of Route 42. But as Schultz tried to take down Robinson, he somehow got hold of him and threw him into traffic on the highway. The dog was killed instantly. “Officer Schultz gave his life for Officer Pickard and all of the men and women of the Gloucester Township Police Department and we’re very thankful for his service,” Chief Harry Earle said. Robinson and Scotese are both facing numerous charges, including robbery and resisting arrest by flight. In addition, Robinson is also facing charges of inflicting harm on a law enforcement animal and cruelty to animals. Police say they are very close to K-9 units — they say they treat the dogs like they treat other officers. And the men lined up early Wednesday morning outside the Chews Landing Veterinary Hospital, saluting as the body of the dog was brought out in a hearse. A service to honor Schultz the dog is planned for next Thursday. Reported By: Jim Melwert, KYW Newsradio 1060 and Ben Simmoneau, CBS 3 Most Popular Stories On CBSPhilly.com 5 Liberians Arrested In West Philly +worker=4 pack_row=2170 ntok=1024 reason=punct_run>7(count=12,text=............) text=?!?!?? I picked him up for $2!!!! Granted he had no weapons or anything, but still............$2! I had never even held one at that point. 5) What is the most surprising or outrageous collecting story you have heard? It has nothing to do with Transformers, but I listen to a radio station and they do an “awkward Tuesday phonecall” segment. Someone has something horribly awkward to tell someone else, so they call the radio station and do it live on the air. Like Jerry Springer, but it’s real. On one of them, a girl wanted to call her boyfriend out on cheating on her. He had a credit card with purchases on it she didn’t know about. So, they call and do their bit. Turns out the guy’s not cheating, he’s been buying back some of his WrestleMania stuff that she made him sell! This actually made her more pissed off than if he had been cheating! So he agreed to sell everything he’s been re-buying to make her happy. I was more pissed off at the guy than I was at the girl. If she actually loved the guy, she would take him as is. I know there are plenty of women out there that don’t approve of our hobby. But in the past 20 years, I’ve seen no women at conventions grow to at least a third or half of the patrons being women now. While there are plenty of women who don’t see collecting as a viable option, in this day and age there are plenty out there that DO see it as a positive trait. I couldn’t believe this guy was willing to give up his collection for a 2ND TIME!!! That’s either true love or true stupidity. My fiancée might not have the same passion about my Transformers, but she understands what they mean to me and encourages my collecting. Like I understand her passions and support them as well. 6) If you could pick one item from your collection to keep, what would it be? It would have to be either my G2 Megatron/Starscream ATB or my original Dinobots cover art page for the G2 comic series. The comic cover is one of a kind, so I might actually have to go with that. But I do love that Megatron toy. 7) If you could have one item out of someone else’s collection, what would that be? My dream finds are the MOSC G2 Stunticons. I know they’re out there and the owners don’t want to sell them. I know because If I had them, I wouldn’t want to sell them either. Eventually, someone is going to sell theirs (at least I hope). When that time comes, I really hope I’m fortunate enough to add them to my collection. I wish I had the money for them 12 years ago when they first hit eBay. A grand each back then was a lot, but I’ll never get that chance again. I’ve got the BotCon breakdown...but to put him on a shelf with Wildrider, Dead End Dragstrip...would be a dream come true. 8 ) What advice would you give a new collector starting out today? Don’t go broke. Seriously, most of the stuff I’ve bought was years ago for much less than they go for now. Either that or I was able to buy in lots and sell the stuff I didn’t need. I haven’t paid anywhere NEAR market value now for most of my collection (all the Japanese ones, I’ve paid a lot for though). It boggles my mind how much some of these guys are worth now. So if you’re going to start collecting, know what you want and try to find a good deal. Buying in lots is a great way since you can sell what you don’t want and re-coup some of your money. That being said, don’t try to low-ball other people selling stuff. I’ve sold my share of things on eBay and other places. I’ve noticed in the past year or two, people are just getting so cheap! I was selling something for $40 a couple weeks ago and someone offered me $30. I came back with $35 and expected to have a deal. No, the person came back with $31. I’m all for saving money, but really? Are we becoming so cheap that we’re haggling over dollars? This kind of thing has been happening more and more. Collectors need to be respectful of other collectors. We’re all in this to have fun and (for some of us) make a +worker=7 pack_row=2284 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=externality. It has become a welfare-reducing activity. And as with other externalities, such as pollution, the Government has a role to intervene, working with councils to manage the externality. We're starting to get analysis that shows planning’s costs." The Costs of Planning It is not only in New Zealand that urban planning has become a negative externality. From London to Vancouver, San Francisco, Sydney and elsewhere (God forbid, even Liverpool) the land rationing strategies of urban planning policies have been associated with the losses in housing affordability, with an up to tripling of house prices relative to household incomes. These policies have lead to significant economic losses, including expanded inequality and labor market distortions. Important domestic goals shared by nations around the world, such as improving the standard of living and reducing poverty cannot be addressed efficiently or effectively in such an environment. Wendell Cox is Chair, Housing Affordability and Municipal Policy for the Frontier Centre for Public Policy (Canada), is a Senior Fellow of the Center for Opportunity Urbanism (US), a member of the Board of Advisors of the Center for Demographics and Policy at Chapman University (California) and principal of Demographia, an international public policy and demographics firm.He is co-author of the "Demographia International Housing Affordability Survey" and author of "Demographia World Urban Areas" and "War on the Dream: How Anti-Sprawl Policy Threatens the Quality of Life." He was appointed to three terms on the Los Angeles County Transportation Commission, where he served with the leading city and county leadership as the only non-elected member. He served as a visiting professor at the Conservatoire National des Arts et Metiers, a national university in Paris. Photo: Auckland Harbour Bridge (by author) Subjects: A WOMAN HAS died after her car was struck by a tree in Co Waterford. The incident occurred in Aglish on the R671 just before noon today. The driver, a woman in her mid 50s, was fatally injured when her car was struck by a falling tree. A female passenger in her 70s was also injured and has been taken to Waterford Regional Hospital with non life threatening injuries. Emergency services are still at scene. Garda said they are urging all road users to remain indoors and not to travel unless your journey is absolutely necessary. Weather conditions in west Waterford and Waterford city are currently described as severe with reports of numerous falling trees due to high winds. Note: An earlier version of this story, based on information from the Garda Press Office, reported the ages as 20s and 50s. This has now been amended. For once, business is going well for Quark, not that anyone on Deep Space Nine truly appreciates his genius for finding profit in the most unlikely of circumstances. Quark is even looking forward to making the deal of a lifetime -- when he suddenly finds himself stuck right in the middle of a major dispute between Bajor and the Ferengi Alliance. It seems that the Grand Nagus is refusing to sell one of the lost Orbs of the Prophets to the Bajoran government, which has responded by banning all Ferengi activity in Bajoran space. With diplomatic relations between the two cultures rapidly breaking down, Quark loses his bar first, then his freedom. But even penniless, he still has his cunning and his lobes, and those alone may be all he needs to come out on top -- and prevent an interstellar war! Streetlight Manifesto at the Rialto Theatre, Tucson AZ By MrAnathema On March 1st of this year, Streetlight Manifesto announced that they“will no longer be touring year round, nor will we be touring much at all anymore. We have decided to step away from the table before we get sick of our favorite meal...”. I, and many Streetlight fans, felt like we had been punched in the gut. Not because there was any feeling of betrayal, but an immense sense of loss. Streetlight Manifesto has been one of the most toured bands in all of Ska-dom. It was not unheard of them to stop in the same city three times a year, in between jaunts overseas to play shows and festivals in far-flung countries, only to turn around and do it again the following year. And the next. And the next. Reading that this was coming to an end, was, for a lack of better term, heartbreaking. A multiple-times-a-year pilgrimage to whatever venue they were +worker=4 pack_row=2240 ntok=1024 reason=top_token_frac>=0.080(frac=0.082,count=84,token=s) text=-pointed star. The star was removed at a later date to make the Red Balloon and Star marshmallows separate. [12] In 1994, sprinkles were temporarily added to the marshmallows. In 1999, the moon shape marshmallows were modified with the addition of the yellow curve line for a limited time. In 2000, a "New Sparkling Rainbow" was added to the mix for a limited time. It was described by General Mills as "a sprinkling of multicolored sugar on a white rainbow marbit." This marshmallow replaced the original rainbow at this time. [14] In 2010, the swirled marshmallows were in Lucky Charms for a limited time. In June 2013, two new rainbow marshmallows were added for LGBT Pride Month. [15] In 2015, new diamond shaped marshmallows were added in. [ citation needed ] Introduced in 2017, limited edition cinnamon vanilla Lucky Charms include only snowman, snowball, and snowflake shaped marshmallows. In 2018 a unicorn shaped marshmallow was added and is here to stay unofficially. In 2018, the unicorn marshmallow was officially staying for good, replacing the hourglass charm. In 2018 winter-themed marshmallows, including snowmen and snowflakes, were added as part of a limited addition chocolatey winter mix[16]. Marshmallow-only promotion [ edit ] In May 2017, General Mills announced they would be promoting 10,000 boxes of cereal that contain only marshmallow pieces.[17] In order to win one of the coveted boxes, consumers would need to purchase a specially marked box of regular Lucky Charms with a code on the inside panel. The code would be entered into an official website to see if the consumer is the winner of one of the 10,000 novelty boxes produced. The sweepstakes ran through December 2017.[18][19] Theme song [ edit ] In the earliest commercials, Lucky Charms cereal had no theme jingle; action was accompanied by a light instrumental "Irish" tune. Soon, however, a simple two-line tag was added: Frosted Lucky Charms, They're magically delicious! This simple closer, with the kids usually singing the first line and Lucky singing the second, survived into the 1980s. Then, with the addition of the purple horseshoe marbit, it was extended into a jingle describing the contents of the box.[20] This was later revised with the addition of red balloons to the now-familiar "Hearts, stars, horseshoes, clovers, and blue moons, pots of gold, and rainbows, and big red balloons!” In 2008, the pot of gold was replaced with the hourglass in the theme song. In 2018 hourglass was replaced by unicorn. The jingle is usually accompanied by mentioning that Lucky Charms contains whole grain ingredients, and is part of a balanced meal. General Mills' market position is centered on cereals that contain "more whole grain than any other single ingredient, which is significant, because 95 percent of Americans aren't eating minimally 48 grams of whole grain per day as recommended by the U.S. Dietary Guidelines."[21] Taglines [ edit ] They're Magically Delicious! [22] Frosted Lucky Charms, They're Magically Delicious! They're Always After Me Lucky Charms! You'll Never Get Me Lucky Charms! Pink Hearts, Yellow Moons, Orange Stars, and Green Clovers! Pink Hearts, Yellow Moons, Orange Stars, Green Clovers, and Blue Diamonds! Pink Hearts, Yellow Moons, Orange Stars, Green Clovers, Blue Diamonds, and Purple Horseshoes! Pink Hearts, Yellow Moons, Orange Stars, Green Clovers, Blue Diamonds, Purple Horseshoes, and Red Balloons! Hearts, Stars, and Horseshoes, Clovers and Blue Moons, Pots of Gold and Rainbows, and Tasty Red Balloons! Hearts, Stars, and Horseshoes, Clovers and Blue Moons, Hourglasses, Rainbows, and Tasty Red Balloons! Hearts, Stars, and Horseshoes, Clovers, Red Balloons, Hourglasses, Rainbows, and Six New Swirled Moons! Hearts, Stars and Horseshoes, Clovers, Blue Moons, Hourglasses, Rainbows, and Tasty Red Balloons in Lucky Charms! Heart, Star, Horseshoe, Clover, Blue Moon, Hourglass, Rainbow, and also Red +worker=6 pack_row=2365 ntok=1024 reason=top_token_frac>=0.080(frac=0.080,count=82,token=) text=bite, leading to a serious arthritic condition that landed him at 19 in a military hospital in California. It was during this time as an invalid that he finished his first novel, Williwaw (E.P. Dutton & Co., 1946), which tells the story of a young man on a transport ship in the Aleutians. He was obviously following Hemingway’s famous injunction to write about what you knew. The novel was published when Gore was 20, with a decent advance. A formal education seemed to him superfluous, as he was already a voracious reader. Throughout his long life, he remained fiercely dedicated to plunging into heavy tomes, taking notes. It was as if he were always studying for an exam that never quite occurred. Never in my life have I met anyone as deeply focused on his self-education, or as determined to expand his intellectual horizons in whatever ways he could. (I recall staying with him one time in the early 90s, when he was reviewing a new translation of Montaigne’s essays for the Times Literary Supplement. He sat for days on end with the French edition of the essays on his lap, rereading them, underlining passages, taking notes, comparing various translations. A dozen studies of Montaigne piled up on his desk. When he finished a long day of study, he would want to sit and discuss his ideas.) Gore knew that, to earn a living as a writer, he must become the consummate salesman of his own work. And so after the war, he traveled about the country to give lectures and readings. "Gore’s reputation was beginning to expand in academic circles," Richard Poirier, a well-known literary scholar who met Gore in the early ’50s when he came to lecture at Williams College, later told me. "But he never actually liked colleges or universities, and they didn’t like him back. As an autodidact, he didn’t approve of those who didn’t fit that mold." It was obvious to Poirier and others who met him that Gore worried that campus life would somehow suck him into its vortex. "Gore kept his eye on New York, on Broadway, on Hollywood — always looking for what he believed was the main chance," Poirier noted. "He didn’t especially like being among ‘teachers,’ as he called us." One can’t imagine Gore in an English Department in the ’50s or early ’60s, where polite decorum of a certain kind remained in place. "I didn’t want to wear a jacket with elbow patches," he once said to me. "I never smoked a pipe." And he liked to travel freely, on a whim. He also wanted to have lots of sex with men, preferably guys he picked up on the streets for anonymous sex. (Always ambivalent, he would say he liked gay sex, but he was not gay.) His irreverence toward authority would have put him at odds with any college administration, especially before the anti-authoritarian sentiments of the late 1960s and ’70s began to take hold. And his irascible temperament would have gone down badly in the faculty lounge, where he would have specialized in insulting colleagues. His own kind of writing — fiction, personal essays without footnotes — would never have earned him tenure. Yet he wanted to be seen as someone who was smart, well-informed, and very much on top of the intellectual world — the equal of Edmund Wilson, whom he admired. In a sense, it was book-reviewing that became Gore’s Harvard and Yale. In the mid-’50s, he began writing for a variety of publications, including the New York-based biweekly The Reporter and, beginning in the ’60s, The New York Review of Books. He liked to take on fairly academic subjects, such as the experimental French Nouveau Roman, literary theory, or postmodern fiction. Nevertheless he could not conceal his contempt for academic writing. "The Hacks of Academe," a famous essay that appeared in the Times Literary Supplement in 1976, was ostensibly a review of a collection of essays on the novel by the literary critic John Halperin, but Gore used the occasion to bash academic pretensions and bad writing, sometimes in a decidedly snoot +worker=8 pack_row=2295 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=forecasts on an estimated revenue of 689 billion rupees. Jaguar Land Rover’s deliveries in China, its top market, expanded 27 percent, reflecting the buoyancy seen by its peers. Automakers have been offering bigger discounts and rolling out new models to entice customers, after the government’s increase of a sales tax at the start of the year deterred buyers in the world’s largest auto market. Jaguar plans to launch the less expensive Jaguar E-Pace SUV in markets including China next year. “We will continue to focus on our strategic objective of achieving profitable, sustainable growth,” Ralf Speth, Jaguar Land Rover’s chief executive officer, said in the statement. The company has spent 1 billion pounds ($1.3 billion) on adding capacity in the quarter, he said. The company will roll out the E-PACE, new plug-in hybrid Range Rover and Range Rover Sport in the next quarter, he said. Jaguar Land Rover retail sales grew 5.1 percent to 149,690. Earnings margin before interest, tax, depreciation and amortization was 11.8 percent, beating the 10.6 percent estimated in a Bloomberg survey of six analysts. Tata Motor’s shares posted their first gain in three days, rising 0.5 percent at the close in Mumbai. Though Jaguar Land Rover’s scale is smaller than its peers, the automaker’s margins compare with Mercedes, General Motors and Toyota. That’s because the company focuses on premium brands and new products, which can limit discounting, Bloomberg Intelligence said in a Sept. 15 report. That said, profitability is cyclical and may be more challenged in future years, as JLR and its competitors invest in engine manufacturing, vehicle architecture and new technologies, without a clear understanding of future profit pools, the company said. The Netherlands government vocalized its support for the use of encryption to maintain privacy online, in a statement issued on Monday. The country’s minister of security and justice Ard van der Steur wrote that the Dutch executive cabinet endorsed “the importance of strong encryption for Internet security to support the protection of privacy for citizens, companies, the government, and the entire Dutch economy. Therefore, the government believes that it is currently not desirable to take legal measures against the development, availability and use of encryption within the Netherlands.” In the statement, Van der Steur highlighted the importance of enabling citizens to communicate privately with integrity as well as democratic functions like journalism which require confidential communication. He also explained that encryption is protected under privacy laws in the Dutch constitution. It’s a bold stance for the Netherlands to take, as countries like China gear up to weaken encryption and introduce backdoors to allow government agencies to snoop on citizens. The UK is rushing to enact a bill this year that would require tech firms to decrypt user data on intelligence and security agencies’ request. The minister recognized the need for encryption in securing government correspondence and data, as well as how the lack of such protection could make the country vulnerable to criminals and terrorists online. However, Van der Steur added that the rights are not absolute; “Infringement is permissible” given “a legitimate purpose” as well as regulation and restriction by law, he said. Shortly after the terrorist attacks in Paris, numerous tech firms including Apple, Facebook and Google warned regulators against weakening encryption measures, arguing that it would “create vulnerabilities to be exploited by the bad guys”. Hopefully other countries in Europe and across the globe will follow the Netherlands’ lead. Dutch government backs strong encryption, condemns backdoors [The Daily Dot] Read next: Obama wants to usher in smart gun tech to help reduce violence One man has been shot dead by the military and over 160 arrested for expropriating necessities in parts of southern Chile, which are suffering a near total lack of basic commodities following a massive earthquake on Saturday morning. Various voices are starting to emerge from the devastated region, denouncing the urgency of the Chilean government - under the control of left-of-centre Michele Bachelet until she hands over to right wing Sebastián Piera on 11 March - in deploying thousands of soldiers and police blockading supermarket entrances against 'looters' instead of initiating a comprehensive aid effort. Many groups, in calling for civil disobedience against the machine-gun wielding military on their rubble-strewn street corners, have drawn comparisons with the military dictatorship of 1973-90. Some parts of the country, such as the rural area around Concepción (Chile's second city), are completely devoid of even the most rudimentary services, implying that +worker=2 pack_row=2317 ntok=1024 reason=punct_run>7(count=22,text=......................) text=or perhaps not more than difficult. And so in time it will come to be looked on as among the things possible, then among the things probable; -- and so at last it will be ranged in the list of those few measures which the country requires as being absolutely needed. That is the way in which public opinion is made." By coincidence, I am writing these words on the morning of my own 23rd wedding anniversary. Of all the blessings life has to offer, none equals a happy marriage. If proportionally fewer Americans enjoy that blessing today than did 40 years ago, we're going to have to look for the explanation somewhere other than the Legislature in Albany. The opinions expressed in this commentary are solely those of David Frum. In 2008, I had the lucky experience to be given a tour of the Yanagisawa saxophone factory in Tokyo, Japan. When I came home I wrote about my experience on the saxophone forum SaxOnTheWeb. That article is now duplicated here to make it easier to find. Yanagisawa liked what I wrote and has linked here from their own website. Yanagisawa themselves also has their own excellent factory tour on their website now, added in 2011. Here is what I wrote. See photos at bottom. ...................... First off, let me say that it is going to be hard for me to write about this without sounding like a shill. I was so impressed with everything that I saw that I am having a hard time being objective, but perhaps it is possible to be objective and still be extremely impressed. I recently had the privilege of taking a guided tour of the Yanagisawa factory in Tokyo, Japan. A person who I actually met right here on SOTW had come to visit me at my shop in New York City, and although I knew he worked for Yanagisawa before he came over, what I didn’t know was that he is Yanagisawa’s chief final assembly technician! His name is Hidemasa Sato, and over time and many emails we became friends. When I told him I was coming to Japan for vacation, he invited me to come visit the factory. Of course, I jumped at the chance. First things first- this factory is small. I didn’t know much about the area where the factory is, so when I got out of the subway into a sleepy residential neighborhood I was surprised. Surprise turned to worry as I got closer and closer to the X on my map and saw nothing but houses and small restaurants and shops- until I heard the unmistakable sound of buffing and hammering wafting down the street. I searched for a front door, but every door I opened went directly into a part of the factory. Turns out they don’t really have a front door! The factory is that small. I found Hidemasa and after introductions and a little catching up, the tour commenced. I was simply blown away by how simple everything was. The factory has a couple of trusty old lathes and mills and drill presses, and almost every other tool in the factory (including mandrels, jigs, form tools...) is made on these manual machines. These tools are then used to make the saxophones. That’s it. No CNC machines, no huge presses, no robots or assembly lines or automated stamping machines. Just hands, tools, and metal. This alone rocked my assumptions about modern saxophone making to the core. To see that hand-making everything is still a viable option for non-boutique horns.... why isn’t everyone doing it this way?? As the tour wound on and I saw every tonehole being drawn by hand, every seam being hand-brazed, every post being hand turned and every spring hole being hand drilled, I came to realize what I had been seeing in Yani horns all of these years. People come into my shop and among many questions that are asked, one of the more popular is “What is the most well-made modern saxophone?” and my answer is always Yanagisawa. And the reason that Yanagisawa is my answer is because Yanagisawa is still making saxophones “like they used to”. Every saxophone is literally made by hand by skilled craftsman who take pride in their work. The same cannot be said for any other saxophone manufacturer. The world of CNC machines and automation has made its way into saxophone manufacture while the artistry and craftsmanship of the individual has given way, but this is not +worker=11 pack_row=2366 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=@time.com. This is the future we’ve all been waiting for – the future where our favorite video games will get their own fidget spinners! SimGurus are showing off the recently-released EA and Sims themed fidget spinners that they got at the EA Experience store. They have fidget spinners in the company store now?!?! What’s happening?!?! pic.twitter.com/i1xbNWRblK — SimGuruChibi (@SimGuruChibi) July 14, 2017 Ive avoided getting a fidget spinner. But after seeing the Sims one @SimGuruChibi posted I had to get one. pic.twitter.com/OmBn5JlsKf — George Pigula (@SimGuruGeorge) July 14, 2017 The price of these are 8$ and even SimGurus are not feeling it: $8 each! I was just at the store haha — SimGuruNick (@SimGuruNick) July 14, 2017 $8?! Maaaan, that’s a little high for a random joke purchase. — Steve Lansing (@SimGuruSteve) July 14, 2017 However, you won’t be able to get your own unless you work at EA or have been invited by EA to do a tour. As much as you may want a Sims fidget spinner, as far as I know it’s employees, employee’s visitors (need a visitor badge), & tour guests. — Steve Lansing (@SimGuruSteve) July 15, 2017 Welcome to the future everyone! A A CLEARVIEW, Wash. - One lucky dog is recovering at home thanks to a team of firefighters in Clearview on Tuesday. Engine 76 from Mill Creek was driving back to their station when they witnessed a vehicle hit a dog on 180th Street Southeast near Highway 9. The fire crew pulled over and jumped into action, placing the dog on a backboard and rescuing her from the ditch where she landed. The dog had serious injuries, fire officials say, and was transported to the Clearview Animal Hospital up the street from where the accident occurred. Witnesses, including the driver who struck the dog, also pulled over to provide aid. The dog's owner was contacted and followed Engine 76 to the hospital. Vets at Clearview Animal Hospital worked to save the dog's life, and while she still has injuries that are being treated, is recovering at home. Winnie Pooh, a 6-year-old dachshund, was left $100,000 when her owner died in 2010. But six years later, the pooch and her caretaker have had little access to the money. View Full Caption Couresy of Virginia Hanlon UNION SQUARE — Every dog has its day — in court. An adorable dachshund named Winnie Pooh was left $100,000 when her owner died in 2010. But six years after the owner's death, the dog has received diddly. That's why Winnie Pooh's caretaker filed court papers this week in Manhattan Surrogate's Court, saying she has a bone to pick with the executor of the estate of the dog's dead owner. The caretaker, Virginia Hanlon, said she has repeatedly requested money from the executor, Harriet Harkavy, who was supposed to use the $100,000 to set up a trust for Winnie Pooh that would keep the pooch pampered until she goes to doggy heaven. But Hanlon, who lives near Union Square, claims she has so far received a pittance from Harkavy — less than $10 a year. Hanlon said as a result she has spent thousands of dollars of her own money on Winnie Pooh's care. "It’s insane. They’re waiting until the dog dies to give out the money," Hanlon said Wednesday about the rough treatment of Winnie Pooh, who is 612 years old and has a life expectancy of 15 years. "I didn’t know what else to do except to put it in the court’s hands," Hanlon added. Her court filing asks a judge to force Harkavy to show the trust's financial records and to pay her the money that's owed to her for the care of Winnie Pooh. Winnie Pooh's owner, Patricia Bowers, died in 2010, leaving instructions in her +worker=7 pack_row=2411 ntok=1024 reason=punct_run>7(count=8,text=........) text=Rum Diaries Blog hovers longingly over the flavour aspect. Before all of that though, a little background. Alan and Amanda Collins own and run Spirit Masters, an English micro-distillery. It is an unbelievably small, family concern based on the Cambridgeshire-Suffolk border near Newmarket. Alan and Amanda are Scientists by trade with Alan having a PhD in Biochemistry and Amanda being qualified in Biomedical Science. Amanda also holds a WSET Level 2 qualification in Spirits, a WSET Level 2 qualification in Wines and Spirits and is also trained in food safety for manufacturing and HACCP (Hazard Analysis and Critical Control Point). Glorious Revolution was launched at RumFest 2014 and created a bit of a stir and excitement. I received a sample bottle a week or so ago and it’s rarely been far from my glass. I also got the opportunity to ask a few questions of Alan and Amanda to inform this article which allowed me a little more insight into their process. A food grade molasses is sourced from their chosen supplier. The key for them is consistency therefore the quality controls necessary to ensure that the supply contains a consistent level of fermentable sugars need to be carried out by their supplier to ensure that the raw material is as unchanged as possible from batch to batch. Alan and Amanda experimented with numerous yeast strains to enable them to utilise their desired technique which is to attain a slow and steady fermentation period until settling on their preferred (undisclosed) yeast . This period lasts for several weeks and I queried whether the UK climate is more beneficial when it comes to controlling the heat levels associated with fermentation as if not monitored and controlled correctly,the yeast will become dormant prior to the completion of the fermentation process. Apparently this is the case as a more consistent ambient temperature assists the process although careful monitoring is still required to control excesses of heat to ensure batch to batch consistency. This slow and long period enables more complex flavours to build which is vital as during the seminar given by Richard Seale at RumFest, the point was hammered home that fermentation is your chance to build flavour within a spirit as the distillation process strips it. As this Rum is unaged and will therefore not be allowed to develop in maturity, it makes total sense to control the fermentation process to provide you with ample opportunity to add complexity and flavour. Distillation takes place over a period of 10 to 12 hours dependent upon the volume being distilled amongst other things. It takes place in a 200 litre copper pot still built in Portugal that has been tweaked to include ‘lentils’, special copper plates made for the top of the still to fractionate the alcohol into much higher levels of purity. The custom heating device employed by Spirit Masters enables them to control the temperature to within 1 degree. This enables careful separation of fractions to enable control over the Rum. The exact time period for distillation that they employ is not completely fixed however. Careful monitoring at several parts of the still, time of distillation, flow rate, volume, aroma and taste of the Rum as it comes off the still, all ensure the consistency of the final product. I queried the abv of the spirit as it comes off the still but was told that although their still has the ability to produce a spirit of up to 91.5% abv, the exact cut is something that they wish to keep as a secret. The Rum itself is not chill filtered either which adds to the mouthfeel....but you’re all interested in what it tastes like........ Glorious Revolution – 40% ABV Tasting Notes In the glass: As you’d expect, the Rum is crystal clear and the immediate thing that hits you are the sugarcane notes. Very vegetal and grassy and it has that Wray and Nephew Overproof funkiness but dialed down....a lot. It is pungent, smells a little creamy with a hint of sweetness tickling my nose. It’s quite intriguing and builds up a lot of anticipation of what to expect.... In the mouth: It certainly delivers on flavour! There is an initial and very short-lived sweetness on entry which fades very rapidly leaving salty black olives which succeed in drying my mouth out . A creamy liquorice follows, like chewing a sweet. The vegetal, grassy agricole is present by the bucket-load but it carries less sugarcane notes than any of the agricoles that I’ve tried. There is something fruity on the back of my tongue, like pineapple that is on the verge of turning. There is also a really savoury edge to the Rum and a +worker=11 pack_row=2387 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=meet the law’s requirements will simply not be enforced in 2014. “President Romney is openly defying the laws of the United States that he swore an oath to faithfully execute,” said the leader of an umbrella liberal interest group that was formed to promote the Affordable Care Act. “Arbitrarily letting employers off the hook for providing health care is not just illegal, but it’s deadly for Americans who are counting that coverage.” That umbrella advocacy group, several major national labor unions, and 14 smaller advocacy groups filed a lawsuit last week in the D.C. Circuit seeking an emergency injunction forcing the Romney administration to enforce the law. The groups are also staging a 24-7 protest in Lafayette Square across from the White House under a large banner reading: “Romney Is Not Above the Law.” A significant number of protesters are calling for the president's impeachment over the issue. Refusing to back down, the Romney administration made a move to suspend enforcement of other major requirements of the law late last week, this time the verification requirements intended to ensure that only qualified individuals receive affordability tax credits for the purchase of insurance plans on the new Affordable Care Act health insurance exchanges. Eligibility will instead be on “the honor system.” Supporters of the Affordable Care Act objected that the move would benefit large insurance companies at the expense of vulnerable individuals the law was intended to help. “These tax credits are paid directly to the giant insurance companies, but if they are later determined to be erroneous then individuals are on the hook to pay back thousands of dollars to the IRS,” said a liberal interest group leader. “Without verification procedures, the biggest corporations are reaping billions in subsidies but the regular Americans this law was supposed to help can be pushed into bankruptcy.” Democrats in Congress accuse President Romney of breaking the law. “The Affordable Care Act is the law of the land, whether Mr. Romney likes it or not,” said the House Democratic leader. “We are confident that the courts will find the president’s lawless decision to let the largest employers off the hook for paying even a portion of the health care costs for their workers to be illegal.” The White House has rejected calls for the president to personally address the issue in a news conference, insisting that its decision to disregard major elements of the law is simply implementing it “in a careful, thoughtful manner.” ----- Copyright 2013 Phil Kerpen, distributed by Cagle Cartoons newspaper syndicate. Mr. Kerpen is the president of American Commitment and the author of "Democracy Denied." Storified by CTVNews.ca Sun, Jul 20 2014 23:36:10 The 29-year-old polar bear currently lives at the Mendoza Zoo in Argentina, where activists say conditions are "deplorable." According to reports, Arturo lives alone in a concrete enclosure where temperatures reach 38 C. And therein lies the problem. Polar bears have two layers of fur and are best suited for temperatures well below zero. So Laura Morales of Hamilton, Ont., started a petition several months ago to bring Arturo to Winnipeg's Assiniiboine Park Zoo. the petition has since received worldwide attention. "We ask that you exercise your authority so the polar bear Arturo, who lives in deplorable condition in the Mendoza Zoo, is moved to Assiniboine Park Zoo in Canada, where a natural habitat and a better life is awaiting him," Morales writes in the change.org petition, which is addressed to Argentinian President Cristina Fernandez de Kirchner. "Say no to death and suffering." The petition, which has a goal of one million signatures, also says Arturo hasn't been able to swim for 28 years and the pool in his habitat is filled with stagnant water. Officials at the Mendoza Zoo said earlier this year moving the bear would be dangerous due to his age. Officials at Assiniboine Park Zoo have agreed to take Arturo, but after ongoing dialogue with Mendoza Zoo, the move fell apart. The government of Mendoza also vetoed the move due to Arturo's health. Some emotional videos and photos of Arturo have prompted many, including some celebrities and politicians, to take to social media to express their support for the bear's move north. A petition calling on Argentina to relocate Arturo, nicknamed the saddest polar bear in the world, to a zoo in Winnipeg has reached the half-million mark as calls grow over social media to bring the +worker=3 pack_row=2413 ntok=1024 reason=punct_run>7(count=8,text=........) text=years. And here’s how you can tell this isn’t real: If he was picking 59% correctly over the course of 12 years, he wouldn’t be selling the picks. He wouldn’t need to because he’s be extremely wealthy and wouldn’t need your $250 membership fee. There are a few very good professional gamblers, but you’ve probably never heard of them (Like Bill Benter, for example), and they certainly wouldn’t be selling their picks if their picks were any good because they could be making way more money betting on them (Benter made a BILLION dollars....with a “B”!). So his numbers are probably not the most truthful...... In fact, Game Advisers, which tracks handicappers plays, has Warren Sharp as 16-23-1 for a negative 23.41% ROI. Not quite the same as what Warren claims. Also, apparently, he pissed someone off enough for them to start http://sharpfootballanalysistruth.blogspot.com. The blog has exactly one post: One of the links in that blog post links to an entire thread about how Warren Sharp is a scam. A poster named Dr. H refers to him as a “sleazeball hack”........his words, not mine. And finally, a public service announcement from one of the covers.com forums: So anyway, my point is that Sharp is a tout who does, at best, sloppy statistical analysis. And yet these major media outlets are touting (see what I did there...?) him as this genius. He’s not. Anyway, back to that quote from The Ringer article. That paragraph continues: In fact, when you talk to people inside the league, some think he might be the top mind, period. Though he’s been writing on the internet for many years, he said it wasn’t until 2018 that teams started reaching out to him to discuss analytics. He says he’s heard from at least five and has done work as a consultant. While I haven’t personally asked anyone I know who works for an NFL team, I would bet everything I own that exactly 0% of the data scientists/statisticians working for NFL teams would consider this guy to be the “top mind, period“. And if I’m wrong about that, I can just take a page out of Warren Sharp’s playbook and lie about my record........ Cheers. P.S. They also mention my old friend Bill Barnwell (who is still blocking me on Twitter) in this article. I actually enjoy reading Barnwell’s stuff, but he also wrote this article once, which was a really poorly done statistical analysis for Grantland. You can read all about the shortcomings of that analysis here and here. P.P.S. I’ve added this flowchart here in case you are thinking about getting involved with a tout (via @cluelessTroll): Groton, Conn. – While floating partially submerged in icy waters along a dock at a General Dynamics’ Electric Boat facility here, the Navy’s first Block III Virginia-Class attack submarine is being readied for sea-trials, certifications and delivery. As a key step prior to formally handing the boat over to the Navy to begin service, Electric Boat engineers and Navy professionals are testing the electronics, wiring, missile tubes and propulsion system on-board the submarine, among other things, said Kurt Hesch, vice president of Virginia-Class submarines, Electric Boat. The USS North Dakota, the first Block III Virginia-Class submarine slated for delivery, is expected to be handed over to the Navy for service by April of this year. An April or May delivery is several months in advance of its contracted arrival in August, Navy and Electric Boat officials said. “The fact we're delivering early to the contract delivery date demonstrates we did the re-design right, something clearly demonstrated in North Dakota’s bow taking two fewer months and 8,000 fewer mandays to build than the previous ship, USS Minnesota,” Capt. Dave Goggins, program manager, Virginia-Class submarines told Military.com in a written statement. Christened in November, the USS North Dakota will be the first of eight Block III Virginia-Class boats delivered to the Navy, submarines engineered with a series of technological upgrades and innovations compared to earlier Blocks I and II boats, Navy officials said. Blocks I and II, totaling 10 ships, have already been delivered to the Navy. All eight Block III boats are being built under a $14 billion Navy deal with General Dynamics’ Electric Boat in December of 2008. He +worker=11 pack_row=2462 ntok=1024 reason=top_token_frac>=0.080(frac=0.085,count=87,token=,) text=the time of the commission of the crime, and pregnant women.” It “calls upon States that have not yet abolished the death penalty to ensure that it is not applied on the basis of discriminatory laws or as a result of discriminatory or arbitrary application of the law.” In voting against it, the U.S. joined Botswana, Burundi, Egypt, Ethiopia, Bangladesh, China, India, Iraq, Japan, Qatar, Saudi Arabia, and the United Arab Emirates. Voting for it were Congo, Cote d’Ivoire, Ghana, Rwanda, South Africa, Togo, Kyrgyzstan, Mongolia, Albania, Croatia, Georgia, Hungary, Latvia, Slovenia, Bolivia, Brazil, Ecuador, El Salvador, Panama, Paraguay, Venezuela, Belgium, Germany, the Netherlands, Portugal, Switzerland, and the U.K. Kenya, Nigeria, Tunisia, Indonesia, the Philippines, South Korea, and Cuba abstained. Belgium, Benin, Costa Rica, France, Mexico, Moldova, Mongolia, and Switzerland introduced the resolution, which won’t force member countries to take action but does constitute an important statement against certain applications of the death penalty. “It is unconscionable to think that there are hundreds of millions of people living in states where somebody may be executed simply because of whom they love,” said Renato Sabbadini, executive director of the International Lesbian, Gay, Bisexual, Trans and Intersex Association, said in a press release. “This is a monumental moment where the international community has publicly highlighted that these horrific laws simply must end.” The U.S. also backed some amendments aimed at watering down the resolution. ”The U.S. supported two of them from Russia that stated the death penalty ‘does not per se mean a (human rights) violation, but may lead to . . . (human rights) violations’ and ‘in some cases the (death penalty) leads to torture, rather than that many states hold that the (death penalty) is a form of torture,’” the Blade reports. These did not pass, nor did an amendment from Egypt that the U.S. supported, stating that “a moratorium [on the death penalty] should be a decision after domestic debate.” The Human Rights Campaign denounced the U.S. vote against the resolution and specifically Nikki Haley, U.S. ambassador to the U.N. “Ambassador Haley has failed the LGBTQ community by not standing up against the barbaric use of the death penalty to punish individuals in same-sex relationships,” said a statement from Ty Cobb, director of HRC Global. “While the U.N. Human Rights Council took this crucially important step, the Trump/Pence administration failed to show leadership on the world stage by not championing this critical measure. This administration's blatant disregard for human rights and LGBTQ lives around the world is beyond disgraceful.” After the mass shooting at Orlando’s Pulse gay nightclub last year, Trump had said he would protect LGBT people from being killed by terrorists, but he appeared to have foreign governments in mind too: "Ask the gays what they think and what they do, in, not only Saudi Arabia, but many of these countries, and then you tell me — who's your friend, Donald Trump or Hillary Clinton?" A Jewish Israeli man was shot and killed at Jerusalem's Western Wall today as hundreds of worshippers began early morning prayers at the site - the most holy in Judaism. The middle-aged man, who has not yet been identified by police, is understood to have shouted the Arabic phrase, Allahu al-Akbar, or God is the Greatest, before a private security guard opened fire, killing him instantly. The phrase, though commonly used in Arabic speaking countries, is often associated in the West with terrorist activity. It is usually shouted by suicide bombers just before they detonate their explosive. There has been little major terrorist activity in Jerusalem in recent years, although suicide bombings were commonplace just a few years ago. We’ll tell you what’s true. You can form your own view. From 15p €0.18 $0.18 $0.27 a day, more exclusives, analysis and extras. The man's motives are not known, but local media reports suggested that he was a regular visitor to the site. "I don't understand why he was shot. Everyone here knows him and his behaviour. He has often acted nervously. What happened here isn't normal," David Dahan, who was at the Western Wall at time of the shooting, +worker=5 pack_row=2457 ntok=1024 reason=too_many_urls(count=3,max=2) text=Kelly was once considered a superstar. Now, people are debating on how long she'll last. [Image by Andrew Toth/Getty Images] Kate Aurthur from Buzzfeed not only rips on Megyn Kelly’s vocal inflections (the Valley Girl, the Whisper, the Baby, and the Purposely Deep), but also suggests that more people are hate-watching Megyn Kelly Today than actually watching it to be informed. Then, there’s Twitter. null null Megyn Kelly didn’t get things off on the right foot last week when she asked Jane Fonda about her plastic surgery. Kelly told Fonda what a great example she has been for aging gracefully. Then, she dug further. “You admit you’ve had work done, which I think is to your credit. But you look amazing...I read you said you felt not proud to admit you had work done. Why not?” Let’s just say that Jane Fonda wasn’t happy with the question. https://www.youtube.com/watch?time_continue=1&v=9j9RrWgo5rE Many viewers considered the question misogynistic, especially coming from another woman. After all, they note that Kelly didn’t ask the other guest Robert Redford about his plastic surgery. Then, there’s the interview with the cast of Will & Grace. According to Entertainment Weekly Kelly invited a superfan of the comedy to meet his television idols. “Is it true that you became a lawyer — and you became gay because of Will?” Kelly jokingly asked the fan. She then gave the fan tickets to the Los Angeles taping of Will & Grace before telling him that the “gay thing is going to work out great.” Some thought Kelly was being awkward, while others thought she was being downright homophobic. Some defended Kelly and compared her to a mom trying too hard to “relate” to her gay son but making it way worse instead. The few that are defending Megyn Kelly say that all the vitriol aimed at the former Fox News star is all politically motivated — liberals dislike her because she worked at Fox News, and conservatives dislike her because they think she “betrayed” her Fox viewers. What do you think of Megyn Kelly? Do you think anybody with a new show deserves to be treated like Kelly is? Let us know your thoughts in the comments section. [Featured Image by Dimitrios Kambouris/Getty Images] Republican political operative Peter Smith was found dead from an apparent suicide, according to public records just acquired by The Chicago Tribune. This came just ten days after he told The Wall Street Journal he’d sought tens of thousands of Hillary Clinton’s deleted emails from hacking groups. Midday Sunday, May 14th, investigators found Smith’s body in a hotel near the Mayo Clinic in Rochester, Minnesota. Smith’s body had a bag over his head which was attached to a helium source, according to death reports. Exclusive: Peter W. Smith, GOP operative who sought Clinton's emails from Russian hackers, killed himself: records https://t.co/3RCEJ4mh6x pic.twitter.com/uUmJykaDNx — Chicago Tribune (@chicagotribune) July 13, 2017 Smith’s Minnesota state death record states his cause of death as “asphyxiation due to displacement of oxygen in a confined space with helium.” Wednesday, when reached by the Tribune, Rochester Police Chief Roger Peterson said Smith’s method of choice was “unusual.” RELATED: A man who once said all Republicans should die went after Melania Trump in his latest podcast Working independently of the Trump campaign and starting in May 2016, Smith told the Wall Street Journal that he and his team worked to acquire tens of thousands of Hillary Clinton’s emails that had been deleted by the former Secretary of State because they described “personal” matters. Smith told the Journal that five teams of hackers, at least two of whom were Russian, claimed to have Clinton’s emails. In documents used to recruit new operatives, The Wall Street Journal reported that Smith named advisers Steve Bannon and Kellyanne Conway, former National Security Advisor Gen. Michael Flynn and campaign aide-turned USDA White House liaison Sam Clovis. The Tribune reports that Smith had a “carefully prepared file of documents” next to him, including a suicide note. Smith explained his suicide as the consequence of a “recent bad turn in health since January, 2017” and “ +worker=15 pack_row=2503 ntok=1024 reason=top_token_frac>=0.080(frac=0.080,count=82,token=) text=as: Recipe for bees: Kill a young bull, and bury it in an upright position so that its horns protrude from the ground. After a month, a swarm of bees will fly out of the corpse. Jan Baptista van Helmont's recipe for mice: Place a dirty shirt or some rags in an open pot or barrel containing a few grains of wheat or some wheat bran, and in 21 days, mice will appear. There will be adult males and females present, and they will be capable of mating and reproducing more mice. In 1668, Francesco Redi, an Italian physician, did an experiment with flies and wide-mouth jars containing meat. This was a true scientific experiment — many people say this was the first real experiment — containing the following elements: Observation: There are flies around meat carcasses at the butcher shop. Question: Where do the flies come from? Does rotting meat turn into or produce the flies? Hypothesis: Rotten meat does not turn into flies. Only flies can make more flies. Prediction: If meat cannot turn into flies, rotting meat in a sealed (fly-proof) container should not produce flies or maggots. Testing: Wide-mouth jars each containing a piece of meat were subjected to several variations of "openness" while all other variables were kept the same. control group — These jars of meat were set out without lids so the meat would be exposed to whatever it might be in the butcher shop. experimental group(s) — One group of jars were sealed with lids, and another group of jars had gauze placed over them. replication — Several jars were included in each group. Data: Presence or absence of flies and maggots observed in each jar was recorded. In the control group of jars, flies were seen entering the jars. Later, maggots, then more flies were seen on the meat. In the gauze-covered jars, no flies were seen in the jars, but were observed around and on the gauze, and later a few maggots were seen on the meat. In the sealed jars, no maggots or flies were ever seen on the meat. Conclusion(s): Only flies can make more flies. In the uncovered jars, flies entered and laid eggs on the meat. Maggots hatched from these eggs and grew into more adult flies. Adult flies laid eggs on the gauze on the gauze-covered jars. These eggs or the maggots from them dropped through the gauze onto the meat. In the sealed jars, no flies, maggots, nor eggs could enter, thus none were seen in those jars. Maggots arose only where flies were able to lay eggs. This experiment disproved the idea of spontaneous generation for larger organisms. After this experiment, people were willing to acknowledge that "larger" organisms didn't arise by spontaneous generation, but had to have parents. With the development and refinement of the microscope in the 1600s, people began seeing all sorts of new life forms such as yeast and other fungi, bacteria, and various protists. No one knew from where these organisms came, but people figured out they were associated with things like spoiled broth. This seemed to add new evidence to the idea of spontaneous generation — it seemed perfectly logical that these minute organisms should arise spontaneously. When Jean Baptiste Lamarck proposed his theory of evolution, to reconcile his ideas with Aristotle's Scala naturae, he proposed that as creatures strive for greater perfection, thus move up the "ladder," new organisms arise by spontaneous generation to fill the vacated places on the lower rungs. In 1745 - 1748, John Needham, a Scottish clergyman and naturalist showed that microorganisms flourished in various soups that had been exposed to the air. He claimed that there was a "life force" present in the molecules of all inorganic matter, including air and the oxygen in it, that could cause spontaneous generation to occur, thus accounting for the presence of bacteria in his soups. He even briefly boiled some of his soup and poured it into "clean" flasks with cork lids, and microorganisms still grew there +worker=1 pack_row=2534 ntok=1024 reason=top_token_frac>=0.080(frac=0.108,count=111,token=,) text=page. Includes numerous bug fixes. Refer to the release notes on the documentation tab for information about the key bug fixes in this release. Users without US English operating systems can select their language and download the International driver here . Additional Information Supports the new GPU-accelerated features in Adobe CS5. Supports GPU-acceleration for smoother online HD videos with Adobe Flash 10.1. Learn more here. Supports the new version of MotionDSP's video enhancement software, vReveal, which adds support for HD output. NVIDIA customers can download a free version of vReveal that supports up to SD output here. Supports DirectCompute with Windows 7 and GeForce 8-series and later GPUs. Supports OpenCL 1.0 (Open Computing Language) for all GeForce 8-series and later GPUs. Supports OpenGL 3.3 for GeForce 8-series and later GPUs. Supports single GPU and NVIDIA SLI technology on DirectX 9, DirectX 10, DirectX 11, and OpenGL, including 3-way SLI, Quad SLI, and SLI support on SLI-certified Intel X58-based motherboards. Supports GPU overclocking and temperature monitoring by installin g NVIDIA System Tools software . Release Notes (v260.89) Control Panel User's Guide GeForce 400 series: GTX 480, GTX 470, GTX 465, GTX 460, GTS 450, GT 430 GeForce 300 series: GT 340, GT 330, GT 320, 315, 310 GeForce 200 series: GTX 295, GTX 285, GTX 280, GTX 275, GTX 260, GTS 250, GTS 240, GT 240, GT 230, GT 220, G210, 210, 205 GeForce 100 series: GT 140, GT 130, GT 120, G 100 GeForce 9 series: 9800 GX2, 9800 GTX/GTX+, 9800 GT, 9600 GT, 9600 GSO, 9600 GS, 9500 GT, 9500 GS, 9400 GT, 9400, 9300 GS, 9300 GE, 9300, 9200, 9100 GeForce 8 series: 8800 Ultra, 8800 GTX, 8800 GTS 512, 8800 GTS, 8800 GT, 8800 GS, 8600 GTS, 8600 GT, 8600 GS, 8500 GT, 8400 SE, 8400 GS, 8400, 8300 GS, 8300, 8200 / nForce 730a, 8200, 8100 / nForce 720a GeForce 7 series: 7950 GX2, 7950 GT, 7900 GTX, 7900 GT/GTO, 7900 GS, 7800 SLI, 7800 GTX, 7800 GS, 7650 GS, 7600 LE, 7600 GT, 7600 GS, 7550 LE, 7500 LE, 7350 LE, 7300 SE / 7200 GS, 7300 LE, 7300 GT, 7300 GS, 7150 / NVIDIA nForce 630i, 7100 GS, 7100 / NVIDIA nForce 630i, 7100 / NVIDIA nForce 620i, 7050 PV / NVIDIA nForce 630a, 7050 / NVIDIA nForce 630i, 7050 / NVIDIA nForce 610i, 7025 / NVIDIA nForce 630a GeForce 6 series: 6800 XT, 6800 XE, 6800 Ultra, 6800 LE, 6800 GT, 6800 GS/XT, 6800 GS, 6800, 6700 XL, 6610 XL, 6600 VE, 6600 LE, 6600 GT, 6600, 6500, 6250, 6200 TurboCache, 6200SE TurboCache, 6200 LE, 6200 A-LE, 6200, 6150SE nForce 430, 6150LE / Quadro NVS 210S, 6150 LE, 6150, 6100 nForce 420, 6100 nForce 405, 6100 nForce 400, 6100 GOP ready to make 'Pledge to America' The party's manifesto calls for tax and spending cuts, a repeal of Obama's healthcare law and strict adherence to the Constitution. The plan treads lightly on hot-button +worker=10 pack_row=2639 ntok=1024 reason=too_many_urls(count=3,max=2) text=iffe, a Democrat, vetoed the bill on live radio Wednesday. He claimed that signing the bill would be “making Virginia unwelcome to same-sex couples, while artificially engendering a sense of fear and persecution among our religious communities.” He also cited corporation leaders’ opposition to the bill, charging that it was “bad for business.” “They don't want headaches coming from the state,” he said. LGBT activist groups also opposed the bill. The Catholic conference said that the bill does not apply to businesses, but “simply affirms the right of religious organizations to follow their religious beliefs.” The conference charged that Gov. McAuliffe’s veto “marginalizes religious believers who hold to the timeless truth about marriage.” The legislation would have preserved “fair access to state resources” for clergy and religious organizations, including charities and schools, the conference said. “Marriage is the first institution, written in natural law and existing before any government or religion, and is between one man and one woman,” the conference added. “Recognizing and honoring this institution is not discrimination, but counting people’s faith against them most certainly is.” Sen. Charles W. Carrico Sr. (R-Grayson) sponsored the bill. He told the Washington Post he believes there will be lawsuits against churches. “I think you see a trend around the country right now to promote homosexual beliefs, and I think you see that trend happening on a wide-scale basis,” he said. The Virginia legislature could override the veto, but that is considered very unlikely, the Associated Press reports. Other bills to protect religious freedom have drawn significant opposition in recent years. In Georgia on Monday, Republican Gov. Nathan Deal vetoed another proposed religious freedom protection bill. In some states and the District of Columbia, new laws and funding decisions have shut down Catholic adoption agencies on the grounds they do not place children with same-sex couples. Some Catholic schools have also become the targets of lawsuits from employees fired for violating morals standards on sexual morality. Wealthy funders like the Ford Foundation, the Arcus Foundation and the Evelyn and Walter Haas Jr. Fund have poured millions of dollars into legal groups, law school projects and activist groups to counter religious freedom protections. Photo credit: Joseph Sohm via www.shutterstock.com 2 June 2015 A security issue affects these releases of Ubuntu and its derivatives: Ubuntu 12.04 LTS Summary Several security improvements have been made to the Apache HTTP Server. Software Description apache2 - Apache HTTP server Details As a security improvement, this update makes the following changes to the Apache package in Ubuntu 12.04 LTS: Added support for ECC keys and ECDH ciphers. The SSLProtocol configuration directive now allows specifying the TLSv1.1 and TLSv1.2 protocols. Ephemeral key handling has been improved, including allowing DH parameters to be loaded from the SSL certificate file specified in SSLCertificateFile. The export cipher suites are now disabled by default. The problem can be corrected by updating your system to the following package versions: To update your system, please follow these instructions: https://wiki.ubuntu.com/Security/Upgrades. In general, a standard system update will make all the necessary changes. This update may cause DH parameters to change which could impact certain Java clients. See http://httpd.apache.org/docs/2.2/ssl/ssl_faq.html#javadh for more information. References KABUL (Reuters) - A popular female politician in east Afghanistan died in hospital on Monday following a bomb attack on her vehicle last week, Afghan officials said, underscoring the growing dangers for women in the government. Angiza Shinwari, in her mid-thirties, was at the start of a second term as a provincial council member in Nangarhar and had been transferred to Kabul for treatment. Her driver was killed in the explosion and four other people injured. It was the second deadly attack on a female politician in three months, after outspoken parliamentarian Shukria Barakzai was targeted in November. Barakzai survived the suicide bombing, but at least three others were killed. Female politicians are often threatened by their families as well as the Taliban, because taking a public role is considered indecent in much of ultra-conservative Afghanistan. Colleagues described Shinwari as a determined defender of women’s rights in the ultra-conservative east and an active member of Nangarhar’s provincial council +worker=0 pack_row=2622 ntok=1024 reason=too_many_urls(count=3,max=2) text=30, 2014 "So as not to insult Allah, this accounting firm requires that all female employees wear the hijab." — southpaw (@nycsouthpaw) June 30, 2014 We’ve seen liberal journalists and commentators rending garments over the implications of this ruling which exist only in their own minds: This isn't a win for religious liberty it's an affirmation of privilege for advocates of conservative sexual morality http://t.co/ctb1FwXIWk — Brian Beutler (@brianbeutler) June 30, 2014 What Hobby Lobby means is there are now two separate classes of women in America: those who work for privately-owned corps and everyone else — Jimmy williams (@Jimmyspolitics) June 30, 2014 Even poor SCOTUS Blog, an organization which merely reports the news out of the Supreme Court, has endured an torrent of misdirected liberal outrage: Finally, and expectedly, we’ve seen liberal politicians stoking ire, generating enthusiasm, and soliciting donations: It's time that five men on the Supreme Court stop deciding what happens to women. — Senator Harry Reid (@SenatorReid) June 30, 2014 Pelosi on Hobby Lobby: "Supreme Court took an outrageous step against the rights of America’s women" — Jim Acosta (@JimAcostaCNN) June 30, 2014 Can't believe we live in a world where we'd even consider letting big corps deny women access to basic care based on vague moral objections. — Elizabeth Warren (@elizabethforma) June 30, 2014 And this, via John Podhoretz’s inbox: It is interesting that there seems to be more outrage over this decision from the left than there was when the Court struck down dated portions of the Voting Rights Act. Though that decision had much farther reaching legal and political implications, this is the issue that has captured the passions of the left. Photo gallery: Robert Downey Jr and Scarlett Johansson in Norwich? UEA transformed into set for new Avengers film Film crew setting up at the SCVA on the UEA campus. Photo: Bill Smith Archant 2014 No photos please! Part of the University of East Anglia campus has been turned into a “secret” movie location, with cast and crew filming part of what is thought to be the next Avengers film. Share Email this article to a friend To send a link to this page you must be logged in. The cast of the film Avengers Assemble. The cast of the film Avengers Assemble. Robert Downey Jr is thought to have arrived by helicopter for the filming which is taking place throughout today at the Sainsbury Centre for Visual Arts. Security is tight around the centre, but excited onlookers are being allowed to watch from a distance, providing their mobile phones and cameras are put away. One sneaky student tried to snatch a few photos from a hall of residence - only for security to pay him a visit and make him delete his photos. A giant green screen has been put up outside the centre, and this morning groups of actors dressed in blue were repeatedly filmed running backwards and forwards in front of screen. Film crews at the Sainsbury Centre for Visual Arts on the University of East Anglia campus setting up for the Avengers: Age of Ultron movie. Picture: www.EnjoyNorwich.com Film crews at the Sainsbury Centre for Visual Arts on the University of East Anglia campus setting up for the Avengers: Age of Ultron movie. Picture: www.EnjoyNorwich.com A large “A” sign for the Avengers could also be seen on the Sainsbury Centre building which had four performance cars positioned outside. Hollywood A-listers Scarlett Johansson, Robert Downey Jr and Samuel L Jackson are among the stars said to be in the Avengers: Age of Ultron cast according to film website IMDb. The Marvel Studios film – said to be scheduled for release next April – sees The Avengers reassemble to battle the sentient robot known as Ultron and is being directed by Joss Whedon, who also directed the first Avengers movie. A UEA spokesman confirmed that the Sainsbury Centre had been booked out until the end of Friday but said they were unable to comment further. However there are reports online of students being invited to audition last month for Afterparty, which is thought to be the code name for Avengers: Age of Ultron, and across the UEA campus there are currently orange signs directing people +worker=15 pack_row=2671 ntok=1024 reason=top_token_frac>=0.080(frac=0.083,count=85,token=) text=better being a man - even with the current disadvantages. "The trouble is, I would much rather be the man I was before all this," he says. Charles blames his ghastly predicament on the UK's then top expert on transsexualism, gender psychiatrist Dr Russell Reid - now retired - who in 2007 was reprimanded by the General Medical Council for rushing patients into sex-change treatments. Dr Russell Reid was found guilty of serious misconduct by a GMC panel who rebuked him for his "lack of caution in initiating hormonal and surgical gender reassessment treatment in patients without more careful and thorough investigation and assessment". Charles was one of those who complained and, while the hearing was ongoing, he was already in the process of changing back into a man. Having decided he was not a true transsexual, but had been 'confused' after the break-up of his 12-year marriage, Charles had his breast implants removed and underwent three private operations after being referred by the gender clinic at London's Charing Cross Hospital to reconstruct his male genitalia, using skin grafts from his stomach. Charles Kane when he was the beautiful designer Samantha in Monaco in 2001 He has to take strong doses of testosterone daily - by applying a gel to his body, because he can't produce the male hormone naturally, and although he says his new genitals look normal, intimate relations with a woman can be achieved only by means of a concealed pump. I meet Charles at his £2million property in Holland Park, West London, where he cuts a debonair figure in a double-breasted suit and tie. It has taken four years of hormone therapy to turn him into someone who does indeed pass as a man - but vestiges of Samantha still remain. Cosmetic surgery has left him with a very feminine nose, while £6,000 worth of veneers have given him a smile any Hollywood starlet would be proud to possess. His skin is likewise peachy smooth with just a hint of downy hair where stubble should be. The constant sweeping of his hair out of his eyes with a delicate hand is also a very feminine gesture. You can see he certainly would have made a convincing woman. But what is so fascinating is his unique take on what life was like as a woman compared with being a man. "At first it was very enjoyable being a woman, especially being a beautiful woman in business. "People notice you and it is much easier to make your presence felt at a meeting. I was flattered by the attention. "I became much more creative as a person, and less aggressive. Whereas, once as a man it had taken me seconds to make a decision, I would think things through much more carefully, weighing up all the options before deciding what to do. "People completely underestimate the effect of male and female hormones. Speaking from my own experience, they affect every part of your life, physically and emotionally. "And then there is the sex. As a man, sex was a very physical and more enjoyable experience, but as a woman it was much more dependent on my mood and emotions. "As a man, I thought about sex every day, but as a woman if I hadn't had sex for a couple of months I wasn't really bothered. "Sex as a woman isn't as good anyway. It is not as intense." Although Charles was initially thrilled with his transformation into a woman - and a beautiful one at that - the novelty soon began to pale and he began to wonder if he was merely playing a part rather than feeling like a real woman. "The worst part about being a woman is being treated as a sex object. I became very irritated when men I was just not interested in kept coming up to me with the worst chat-up lines I'd ever heard," says Charles. Even though I was a woman physically, in many ways I felt I still had a male brain. I was still interested in the world, what was happening, current affairs, business and sport, but the women I mixed with didn't share that interest to the same degree. "In fact, I found being a woman rather shallow and limiting. So much depends on your appearance, at the expense of everything else. I wasn't interested in shopping. "My female friends would spend hours shopping for clothes, trying on different outfits. "But having been a man I knew exactly what would suit me and appeal to men. +worker=14 pack_row=2686 ntok=1024 reason=punct_run>7(count=8,text=........) text=the body, the Doctor said, that the centipede poison can alleviate the condition, and for this reason, Wang Lin used to catch centipedes to treat his father. Even now, Wang Lin could remember the past quite well. Looking at the hundred meter long centipede infront of him, Wang Lin touched his chin, thought that, if small centipede poison can cure, then this big centipede’s poison should certainly have better effect, for sure can get rid of his father’s illness once and for all. But the Centipede was too big, Wang Lin compared himself with it, felt insignificant, he worried that if he took out the poison incorrectly might even risk injuring himself. Suddenly, Wang Lin’s expressions stirred, he remembered that in the village there was a recipe for extracting centipede venom, it is said that the recipe has been passed down since generations, and boiling some herbs into granules, are fed to the centipede which after eating it, will spit out centipede venom. Thinking so, he stared at the Centipede, with his heart racing, without hesitation immediately rushed to the Dan Fang. If we want to find where the entire Sect’s herbs are, the answer would be the Dan Fang, he hadn’t seen Wang Hao since four years, so he took this opportunity to go and see. At this point it was getting late, Wang Lin arrived at the Dan Fang, just in time to see Wang Hao coming out with great care from the Side door, Wang Hao noticed Wang Lin and put his finger to his lips, hissed and motioned for him to go out. Wang Lin hesitated and swept away with his soul, found three Seniors in the Dan Fang looking serious, continuously putting various herbs in the furnace, looking focused. Not far out, Wang Hao silently came out, noticed that Wang Lin didn’t make a sound, took him along with him as he ran a bit, until they had ran quite far away, at which he breathed out a sigh of relief. “Wang Lin, I heard that you attended the training camp four years ago, so what layer of Concentrating Qi now?” Wang Hao took a long time, looked hauntingly in the Dan Fang’s direction, quickly asked, his look filled with a trace of hope. “Third layer of Concentrating Qi......what’s this?” Wang Lin swept away with his soul, Wang Hao lay transparent before him, only needed to glance once, Wang Hao is at first layer of Concentrating Qi, but his body is very strange, his LingQi is not flowing in accordance with the normal circulation, but taking a different path, is circulating in a strange way. With each cycle of the loop, a trace of JingQi is removed from his internal organs of Wang Hao, and integrated into the loop. [TLNote: No, this is not a typo, JingQi where it approximately means Vitality or Life essence] In this state, I’m afraid it won’t be long before, Wang Hao’s JingQi will be scattered and he will die! Wang Hao smiled bitterly and said: “Did you see?” Wang Lin nodded, in a low voice said: “Wang Hao, between just you and me, tell me what’s going on?” Wang Hao clenched his fists & teeth and said: “When we went to the fair, I could not obtain a Zaohua pill, I had been brooding over this matter, and later inadvertantly the Master........bah, Lu Yunjie, he gave me a Zaohua pill, telling me that it’s my payment for being a helper, I was pleasantly surprised over and over again as Lu Yunjie gave me a practicing technique which according to him was better than that practised by other disciples, I was out of my mind, without thinking, began practising it.” Wang Lin took a deep breath and said: “Practicing technique? Show me!” Wang Hao took out a scroll and threw it towards Wang Lin, and continued saying: “But fucking hell, I practised for two years, and my body grew worse the more I practised, although LingQi appeared in my body but it didn’t listen to me, I secretly bribed a disciple in the +worker=1 pack_row=2688 ntok=1024 reason=punct_run>7(count=8,text=........) text=was a lot of gloom. The jut and slump of broken architecture around them worried at the Dragonbane’s attention, sketched hints of a thousand phantom enemies, crouched to pounce every few yards. Every darkened gap in the rubble they passed seemed to promise an ambush, every glint of something shiny in the low light was a reptile peon’s eye. Egar, yawning despite the heightened tension, marched with a prickling at the nape of his neck and tried to recall useful detail from the tactical lectures given by the Kiriath commanders during the war. Like any reptiles, the Scaled Folk like heat better than cold, but they seem to have adapted beyond this in ways their smaller cousins on this continent have not. They do not depend on warmth to the same extent, and can function quite sufficiently well in cooler conditions. Yet their ancestry tells upon them in a number of ways which may be helpful to us. They are drawn instinctively to warmer climes and to discrete heat sources; they appear to accord some sacred significance to the roasting pits they build and ignite; and they do not stir early in the day if they can avoid it. Sounds like me, muttered Ringil to him in the back rank where they stood, and Egar tried to stifle an explosive snigger. They’d both been a lot younger back then. You have something to contribute? Flaradnam, seamed black features glaring into the ranks. He waited a beat, got no response. Then shut the fuck up and listen, all of you. What we tell you here today could save your life. Across the shattered pre-dawn city, then, threading through empty streets and plazas, picking their way up and over mounds of rubble bigger than any intact building he’d ever seen, even in Yhelteth. Once again, the fire sprite led them a crooked, seemingly senseless path through the ruins. They backed up and twisted and turned. They followed thoroughfares straight as arrows for miles, then turned abruptly off them into tangled, broken ground, worked difficult, meandering routes, only to spill out onto what Egar would have sworn was the same thoroughfare an hour later and head onward as if they’d never left it. Once, some way along a broad boulevard similar to the one they’d been attacked on the night before, the sprite led them directly off the street and up a punishingly steep rubble slope, then along a windy, exposed cliff face of ruined facades that ran for at least half a mile and tracked the boulevard directly. It was tricky work, and in some places involved clinging and edging their way forward with the risk of a lethal fall, while all the time below them, the boulevard stretched on, devoid of apparent obstacles and utterly deserted. “You think,” he asked Archeth, breathing hard, as they rested at one of the infrequent safe sections. “That this thing has a sense of humour?” She looked out to where the sprite hung blithely suspended a couple of yards away in empty space and a hundred feet off the ground. “Either that, or it thought we’d like the view.” “Yeah. Well worth the climb.” Egar glowered out across the fractured landscape, and the pale grey wash of another cloud-shrouded morning. “Like Gil would say if he was here, I’m particularly enamoured of the......” She glanced round curiously as he trailed off. He squinted, wanting to be sure, then pointed outward, what he estimated had to be north-east from their position and a dozen miles off or less. “You see that? Past that torn up pyramid thing? Where the three boulevards cross, then back a little and left. See the........what is that? Looks like.....” Talons. As if a broad expanse of the city’s structure had broken like pond ice under the weight of some vast, lumbering black iron creature, which now clung to the ragged edges of the hole it had fallen through with huge claws sunk in, struggling not to go down into an abyss below. As if several gargan +worker=1 pack_row=2689 ntok=1024 reason=punct_run>7(count=8,text=........) text=tuan black spiders out of one of his father’s tales hung suspended in a shared, irregularly shaped ambush burrow, only their limbs extending up and out to grip the edges of the gap on all sides, poised to spring. As if dragon’s venom had splattered on the city’s flesh in overlapping oval pools, had eaten its way in and left splayed black burnmarks all around, or........ It dawned on him then, full force. It looks like Kaldan Cross. As if the Kiriath had laboured here as they had at Kaldan in Yhelteth, delving down into the bedrock for their own obscure purposes, reinforcing the sides of their pit with outward clamping iron struts, but on a massively larger scale. “Look familiar?” he asked. “Well, it’s Kiriath built, that’s for sure.” Archeth, shading her eyes against the glare the rising sun had put into the clouds. “And whatever it is, it goes down. Aerial conveyance pits, right?” “You reckon?” “I reckon it’d be a pretty huge coincidence otherwise.” She propped herself carefully upright against the facade at their backs. “Come on, let’s see if our flickery friend there feels the same.” * They followed the facade almost to its end before the sprite dived into a gap in the stonework and led them down through a series of collapsed and angled spaces that might once have been rooms. They crowded in behind, relieved to get away from the sheer drop, but none too happy with the confined quarters and gloom. Our scaly pals show up now, they’ll have us quicker than a shaman’s shag. Egar’s gaze flickered about, making the odds. Barely enough room in here to swing a fucking long knife, let alone a sword or axe. And gaps on every side – floors, walls, ceilings, it’s all up for grabs. Still, he slapped down any comments in that direction from the men at his back, told them to shut the fuck up and watch where they stepped. While ahead and below him, Archeth’s lithe form braced its way downward with boots and elbows and arse, backlit into silhouette by the sprite’s onward beckoning fire. Not bad, Archidi, for someone with a sewn gash across the ribs big enough to stick your whole hand in. And not a grain of krinzanz to sweeten the ride. He didn’t know if she’d used any of the powders they were gifted with at An-Kirilnar, but somehow he doubted it. There was a gritted edge on Archeth right now – if anything, she seemed to be using her pain for something, maybe as a substitute for the fire the krin habitually lent. “You alright?” he asked her, when they finally spilled out into the light at street level and he stood close at her shoulder. She didn’t look at him, took no break from scanning the street ahead, for all that the sprite was already drifting steadily along it. “Yeah, why wouldn’t I be?” “Stitches holding up?” “Well, you should know – you put them in.” She glanced round at him, face tightening up into a grimace as her body twisted. “Stings worse than getting head from a cactus, if you really want to know. But it’s some beautiful fucking work, Eg. I don’t reckon Kefanin stitches my riding leathers this well.” He shrugged, mask for the enduring bitter taste the skirmish the night before had left. “All part of the service. If I can’t keep you from getting hurt, at least I can patch up the damage afterwards.” “Works for me.” The last of the men dropped out of the gap in the masonry behind them and straightened up with vocal curses of relief. Egar shut them up, got them formed into a loose wedge, and led them out once more behind Archeth and the sprite. The rest was hard marching but uneventful. They cut across the mounded rubble a +worker=7 pack_row=2773 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=the biggest on-demand streaming service out there. But its direct rivals, including Beats, Rdio and Deezer (the last of which, to be fair, has only just arrived in the US) remain pretty unknown. The good news for streaming music services like these is that there is plenty of room to grow. Their challenge is convincing people to pay for music again. That’s an entirely different proposition. Parents of autistic child lodge action against Belgian state The shortage of places in institutions for autistic children is, once again, in the news. Belga The parents of an autistic child, living in Brussels, launched interlocutory proceedings before the Court of First Instance in Brussels yesterday (Monday). Their complaint is for non-compliance with their child’s health rights. Owing to a lack of places in specialist institutions, the child has been unable to receive appropriate personalised care. This was being reported on RTBF (the radio and television channel) yesterday. The federal state lawyer requested an adjournment of around ten days to attempt to find a placement solution, which could now be implemented by the end of October. The next hearing was scheduled for September 14th. This case is, by no means unique. Within the Wallonia-Brussels Federation there are some 1,300 places within specialist institutions, although the number of autistic children is estimated at a staggering 11,000. In 2013, the Council of Europe had already criticized Belgium for a shortage of accommodation places, and indeed solutions, for high dependency handicapped individuals. Since then, the Walloon and Brussels health and social care authorities launched an initiative to support those suffering from autism. The remit of such authorities was to comprehensively establish needs and instigate, in the long run, individualised life-long support. Christopher Vincent The Brussels Times Last week, I was presenting at a conference and discussing the merits of animated visualizations vs. small multiples. On one of my slides, I presented the following chart that shows the total fertility rate (i.e., the average number of children born per woman) for the U.S.A. and Japan over a 60-year time period. After the talk, one of the audience members came up to me and asked why there was that weird blip in Japan’s fertility rate in 1966. It turns out that there’s a fascinating explanation — an explanation that finds its roots in astrology and superstition. Astrology and superstition If you were born in the U.S. (or many other Western countries), you were probably assigned an astrological sign based on the day you were born: Aries if you were born between March 20 and April 19 (roughly), Taurus if you were born between April 19 and May 20, and so on. Each of these signs are associated with personality traits and various other features. The Japanese use a similar astrological system, but one instead based on the Chinese zodiac. Along with assigning an astrological beast based on your birth year, each year also has one of the Five Elements associated with it—all that dramatically affect what your astrological sign entails. Astrologers would like us to believe that our personality—and even our entire lives—are guided by these signs, but most people don’t take these predictions too seriously. In 1966, however, many Japanese families were still quite superstitious—and that’s why we see that blip in fertility rates in 1966. You see, 1966 was the year of (Hinoe-Uma), or the “Fire Horse.” As one source describes: Girls born in [1966] became known as ‘Fire Horse Women’ and are reputed to be dangerous, headstrong and generally bad luck for any husband. In 1966, a baby’s sex couldn’t be reliably detected before birth; hence there was a large increase of induced abortions and a sharp decrease in the birth rate in 1966. Instead of taking the risk of raising a “Fire Horse Woman,” whose headstrong nature would bring bad luck for her future husband, many Japanese families avoided having children entirely in 1966. In essence, superstition was embedded so deeply in Japanese culture that we could measure its effects on a macro-population scale. Time will tell if superstition will strike again 10 years from now in 2026, the next year of the “Fire Horse” in its 60-year cycle. Given that Japanese is already below the replacement fertility rate (i.e., roughly an average of 2 children per woman), the result could be disastrous. Liberal Party votes to maintain current policy on same- +worker=2 pack_row=2768 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=it and package it all inside each state. It’s quite a logistical challenge,” he said. While VCC and Colorado-based Dixie are currently the biggest players in cannabis edibles and drinks, most people at the conference reckon it’s just a matter of time before big business companies move into the sector. “Pharma, tobacco, alcohol they are all eyeing this industry,” Farrington said. “They may well be walking these halls, but absolutely surreptitiously. This is a schedule 1 drug they cannot be seen to be associated with it.” A couple of stalls down from VCC’s chocolates, Jar Velleman is declaring a “green rush” to anyone who’ll listen. Velleman has flown over from the Netherlands to sell indoor horticultural lights made by his company, Gavita. “This is the green rush,” he said. “It’s like the gold rush but this time the money is in plants. I’m selling lights – the shovels of this trade. And in the real gold rush who made the most money? The people who dug gold or those who sold the shovels ...? “We sell lights to grow plants, they can grow any plants. Our biggest customers were people growing cut flowers, but weed has become really big business in the last few years and is now our biggest market,” he said. “We expect it to grow exponentially in the next 2-5 years as more states and countries move to legalise marijuana.” Velleman explained that demand from marijuana growers is strongest because the most popular cannabis plant strains grow best indoors under artificial lights. Gavita is not the only traditional horticultural company shifting its business to take advantage of the marijuana growing boom. Jason Schofield Ralph-Smith of British hydroponics company Autopot said he is “just following the money”. “There is so much money to be made out of cannabis,” he said. “And it will just get bigger and bigger as more US states legalise, the rest of the world is watching and we expect more and more countries to follow.” Ralph-Smith said he imagines about 60% of the watering systems he sells are used for weed cultivation, but he stressed: “I don’t know what they’re growing. I don’t ask, it could be tomatoes.” The LSU Tigers are now 3-0, behind the running of dynamic Heisman candidate Leonard Fournette and a power running game that is innovative. Mark Schofield looks at how Fournette is so successful: the blocking of fullback John David Moore paving the road. Let’s show a little love for the fullback. These days, spread offenses use three and four wide-receivers on each play, throwing the football on virtually every snap. It may be that the fullback is going the way of the dodo bird with fewer and fewer teams relying on the position. But some schools still use a big bruiser as a ball carrier and blocker in backfield and the LSU Tigers are one of them. When the Tigers needed a big play on the road against the Syracuse Orange, it was their fullback, John David Moore, who led the way. Late in the third quarter, the Tigers have the football facing a 2nd and 13 on their own 39. The Orange had scored a touchdown on their previous possession to cut LSU’s lead to seven. On the previous play they dragged down talented running back Leonard Fournette for a three-yard loss. The Carrier Dome crowd was coming alive, and the visiting Tigers needed a big play. Deploying 21 offensive personnel on the field, quarterback Brandon Harris (#6) is under center, with a slot formation right, and the backs Moore and Fournette in i-formation. Syracuse rolls out a base 4-3 defense on the field: LSU runs one of their other bread-and-butter running plays here: the lead power run to the right side: Two nice blocks happen on the right side at the point of attack, with right tackle Vadal Alexander (#74) kicking out the defensive end, while right guard William Clapp (#64) flashed to the second level to take on the play-side outside linebacker. Fournette takes the handoff from Harris with Moore leading him through the hole. And no one comes close to touching him: Fournette is into the secondary before anyone has a chance to make the tackle, but wide receiver Travin Dural (#83) does a great job of locking up safety Rodney Williams (#6), and Fournette has a huge +worker=13 pack_row=2715 ntok=1024 reason=top_token_frac>=0.080(frac=0.085,count=87,token=) text=ESPNU Noon NC State at Connecticut ESPN3 & BIG EAST Network 3:30 p.m. Air Force at No. 10 Michigan ABC & ESPN2** 3:30 p.m. No. 12 Michigan State at Central Michigan ESPNU 3:30 p.m. Indiana at Massachusetts ESPN3* 3:30 p.m. Howard at Rutgers ESPN3 & BIG EAST Local Package 7 p.m. Memphis at Arkansas State ESPN3* 7 p.m. Louisiana-Lafayette at Troy ESPN3* TBD Texas Tech at Texas State TBD Thu, Sep 13 7:30 p.m. Mississippi Valley State at Southern ESPNU Sat, Sep 15 Noon California at No. 20 Ohio State ABC Noon Arkansas State at No. 17 Nebraska ESPN, ESPN2 or ESPNU Noon No. 19 Virginia Tech at Pittsburgh ESPN, ESPN2 or ESPNU 3:30 p.m. Navy at Penn State ABC & ESPN2** 3:30 p.m. North Carolina at Louisville ABC & ESPN2** 7 p.m. Rice at Louisiana Tech ESPN3* 7 p.m. Delaware State at Cincinnati ESPN3* 7 p.m. Mississippi State at Troy ESPN3* 8 p.m. Colorado State at San Jose State ESPN3* Wed, Sep 19 7 p.m. Kent State at Buffalo ESPNU Thu, Sep 20 7:30 p.m. Arkansas Pine Bluff at Alabama State ESPNU Sat, Sep 22 Noon Massachusetts at Miami (OH) ESPN3 & MAC Game of the Week 2 p.m. Connecticut at Western Michigan ESPN3* 3:30 p.m. Gardner-Webb at Pittsburgh ESPN3* 4:30 pm South Florida at Ball State ESPN3 7 p.m. Louisville at Florida International ESPNU or ESPN3 7 p.m. Southern Mississippi at Western Kentucky ESPN3* 8 p.m. New Mexico at New Mexico State ESPN3* TBD Kansas at Northern Illinois ESPNU or ESPN3 Thu, Sep 27 7:30 p.m. Morgan State at North Carolina A&T ESPNU Sat, Sep 29 Noon Buffalo at Connecticut ESPN3 & BIG EAST Network Noon Ball State at Kent State ESPN3 & MAC Game of the Week 8 p.m. UNLV at Utah State ESPN3* TBD Nevada at Texas State TBD Sat, Oct 6 Noon Buffalo at Ohio ESPN3 & MAC Game of the Week 7 p.m. UNLV at Louisiana Tech ESPN3 & WAC Syndication Sat, Oct 13 4 p.m. Utah State at San Jose State ESPN3 & WAC Syndication Thu, Oct 18 7:30 p.m. Hampton at NC Central ESPNU Sat, Oct 20 Noon Northern Illinois at Akron ESPN3 & MAC Game of the Week 1 p.m. Army at Eastern Michigan ESPN3* 3:30 pm Pittsburgh at Buffalo ESPN3 7 p.m. Idaho at Louisiana Tech ESPN3 & WAC Syndication TBD Cincinnati at Toledo ESPNU or ESPN3 Thu, Oct 25 7:30 p.m. Delaware State at Morgan State ESPNU Sat, Oct 27 Noon Northern Illinois at Western Michigan ESPN3 & MAC Game of the Week 3:30 pm Kent State at Rutgers ESPN3 & BIG EAST Local Package Sat, Nov 3 4 p.m. Texas-San Antonio at Louisiana Tech ESPN3 & WAC Syndication TBD Western Michigan at Central Michigan ESPN3* Sat, Nov 10 3:30 p.m. Navy at Troy ESPN3* Sat, Nov 17 Noon Rutgers at Cincinnati ESPN3 & BIG EAST Network Noon Kent State at Bowling Green ESPN3 & MAC Game of the Week Thu, Nov 22 4 p.m. Tuskegee at Alabama State ESPNU Sat, Nov 24 3 p.m. Idaho at Utah State ESPN3 & WAC Syndication * ESPN3 exclusive game ** Reverse mirror in which ESPN2 will regionalize two games on ABC to markets not receiving the telecast -30- A new user on the Professional Pilots Rumour Network posted to ask if there is any reference for uncommon, random and out of the blue scenarios that require ATC attention. He was apparently looking for input for an ATC game he’s writing. Typical PPRuNe, the answers are priceless. The full thread is at ATC Scenarios – PPRuNe Forums but I’ve picked my favourites to share with you. Items requiring immediate attention: Coffee cup empty. Relief late for work Santa Claus requesting clearance Horses at home have got out of their paddock Not sure what I’d do +worker=4 pack_row=2801 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=content related to Blood and Gore, Intense Violence, Nudity, Strong Language, Strong Sexual Content, Use of Alcohol. The full rating summary is posted below, it contains details about sexual content, drinking mini-game, melee style combat and many more things. This is an open-world role-playing game in which players assume the role of Geralt, a monster hunter in search of a missing woman. Players explore a war-ravaged world while completing quests and killing enemy soldiers and fantastical creatures (e.g., wraiths, harpies, rock beasts). Characters engage in melee-style combat using swords and other bladed weapons, as well as magical attacks (e.g., blasts of fire, stun spells); combat is highlighted by screams of pain and impact sounds. Large blood-splatter effects occur when enemies are slashed, with some attacks resulting in decapitation or dismemberment. Some cutscenes depict slow-motion decapitations and other gore: an autopsy of a torture victim, rooms with several corpses (e.g., hanging from the ceiling, covered in blood on a bed, naked in a tub). During the course of the game, the central character can engage in sexual activity with prosti%$& and female companions. These brief sequences depict females' b#@!sts and Bu$$@cks—sexual moaning sounds can be heard, though the camera cuts away from explicit sexual acts. The game includes a side quest in which Geralt engages in a drinking game; characters are depicted drunk and/or passed out. The words "f**k," "sh*t," and "c*nt" can be heard in the dialogue. Next page [Updated – timeperiod-split maps added] Following on from my London bikeshare journeys graphic, here is the same technique applied with the data released by NYC Bike Share (aka Citi Bike) earlier this week. If you look carefully at the full size map you can see a thin line heading north-eastwards, initially well out of the bikeshare “zone”, representing journeys between Williamsburg and Central Park, via the Queensboro Bridge cycle path. We see a similar phenomenon for journeys between Tower Bridge and Island Gardens in London. Whether any of the riders actually take this route, of course, is open to question – they might take a longer – but more familiar – route, that stays more within the area of the bikeshare. Below is a version of the graphic with the data split into four timeperiods – weekday rush-hour peaks (7-10am and 4-7pm starts), weekday interpeak (10am-4pm), weekday nights (7pm-7am) and finally weekends. The data is scaled so that the same thicknesses of lines across the four maps represent the same number of journeys along each street segment – but bear in mind that there are fewer weekends than weekdays. While, as would be expected, the rush-hour peaks see the most number of journeys, there is less spatial variation across the city, between the four timeperiods, than I expected. Click on the graphic for a larger version. The graphics were produced by creating idealised routes (near-shortest path, but weighted towards dedicated cycle routes and quieter roads) between every pair of the 330 docking stations in the system, using Routino and OpenStreetMap data (extracted using the Overpass API). Edge weights were then built up using a Python script, a WKT file was created and then mapped in QGIS, with data-based stroke widths applied from the weights. The routes are only as good as the OpenStreetMap data – I think the underlying data is pretty good for NYC, thanks to great community work on the ground, but there is still a possibility that it has missed obvious routes, or proposed wacky ones. It also doesn’t account for journeys starting or ending at the same place, or journeys where the prime purpose is an exploration by bike – with the user unlikely therefore to take an “obvious” A-B route. Even with that caveat, it’s still a revealing glimpse into the major route “vectors” of bikeshare in New York City. Damontre Moore smiles and his eyes widen when you ask him to tell the good people of Cleveland what they are about to witness when the Johnny Manziel Era begins Sunday against the Bengals. +worker=7 pack_row=2892 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=products,” Bragg said. Based on TV viewing data, Bragg’s team found that teens saw more of the ads by athletes during the year than adults. “We know that children and (teens) are really affected by this type of thing,” Boyland told Reuters Health. “We know that influences the type of foods they choose and they eat.” It’s also clear that such selling tactics work, researchers said. The proof, they say, is that companies will pay athletes millions to endorse a product. Bragg said parents should be aware that many products being marketed to children may be of questionable nutritional quality. “Just because they’re athletes doesn’t mean that what they’re endorsing is healthy,” she told Reuters Health. She said putting limits on TV watching is one step parents can take to reduce the influence of marketing. Kathleen Keller has studied food branding and eating habits at The Pennsylvania State University in University Park. She says parents should explain how advertising works to children. That’s because even if kids don’t watch TV at home, they will still end up seeing ads all over the place, she told Reuters Health. “Within your home you can really teach your kids from a young age about what the purpose of marketing is, what the purpose of advertising is,” Keller said. SOURCE: bit.ly/cxXOG Pediatrics, online October 7, 2013. WASHINGTON (AP) - An Iranian-American woman with West Coast roots and more than 25 years of experience in the flower industry is the new White House head florist. Michelle Obama announced the appointment of Hedieh “Roshan” Ghaffarian on Thursday, a week before President Barack Obama and the first lady honor China’s leader with a lavish state dinner. Mrs. Obama said Ghaffarian’s life story is a reminder that the American Dream lives on. “The president and I look forward to seeing her creativity flourish for White House guests to enjoy year-round,” the first lady said. Born in Tehran, Iran, Ghaffarian was raised in the Northern California city of Los Altos after immigrating with her family as a child following the 1979 Iranian revolution. In her twenties, she started her business, Flower Affairs, in her parents’ garage. She has more than a quarter-century of experience envisioning, planning and executing large-scale events, the White House said. Ghaffarian, 46, trained with florists based in the United Kingdom and her work has been featured by several publications, including The Knot, Ceremony and Today’s Bride. Ghaffarian said she is “humbled” by the opportunity to serve and “will dedicate myself to advancing the tradition of excellent and elegance in the White House.” She will be “on hand” for next week’s state dinner and will join the White House full time in mid-October after completing a move to Washington. Ghaffarian succeeds Laura Dowling, who resigned the head florist job earlier this year. ___ Follow Darlene Superville on Twitter: https://www.twitter.com/dsupervilleap Copyright 2019 The Washington Times, LLC. (WJLA) -- The company has a catchy name - Deck Daddy - and has done a lot of advertising calling itself America's #1 choice for deck resurfacing. But then the complaints came rolling in to the Better Business Bureau and 7 On Your Side. Allen Rector hoped to extend the life of the aging deck around his Marshall, Virginia home ahead of his mother's 75th birthday. In April he hired Deck Daddy to resurface his deck, but during a tour he showed 7 On Your Side Investigator Kris Van Cleave several places where he felt the work was sub-par. "When you sit on it and look at it you can tell there are a lot of workmanship issues that need to be corrected," said Rector. The former Marine says he called 7 On Your Side for help after Deck Daddy overcharged him. "I told them to put $2,000 on the credit card and then had a check for the balance of $4,365.00," Rector said during an interview at his home. "Instead of $2,000 they put the full balance on the credit card as well as cashed the check." Rector's was just the first of nine complaints received by 7 On Your Side. At least 10 have been filed with the Better Business Bureau. Herndon resident Cheryl Gault, a widowed mother of three, hired Deck Daddy, but says the work on her deck was never done. "I didn't get anything but a two-month run-around," +worker=10 pack_row=2990 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=toward service people changed into a different kind of disempowerment. Steve would order the same meal night after night, yet he’d complain bitterly each evening about the little side sauces that were served with it, cutting the air with disdain for the waitstaff who would serve up such greasy-salty-tasteless-mock-fine cuisine. He seemed to assume that everyone at the restaurant should know better than to serve up such wallpaper paste — not only to him, but at all. Steve would run down the waitstaff like a demon, detailing the finer points of good service, which included the notion that “they should be seen only when he needed them.” Steve was uncontrollably critical. His reactions had a Tourette’s quality — as if he couldn’t stop himself. Of course, it must have been sort of wild to have your genius recognized at the age of twenty-two, to be thrust into such a role of authority. Steve had always been a brilliant misfit, but at this time — to be generous — he wasn’t managing his growing power very well. In fact, he was positively despotic. Excellence had always been a gorgeous thing in Steve, but now he was using it like a weapon. He’d look for excellence and when he didn’t find it, he’d behave badly and take it out on people. As Steve’s first girlfriend I increasingly experienced what it felt like to have him turn against me. And so it was at this time that I began to perceive that awesome and awful could be but a hair’s breadth apart. And where Steve’s fullness met mine with staggering beauty (there was a reason he called fifteen years later to acknowledge the importance of the nights we’d shared), he was also becoming so creatively unstable, so out of integrity with himself that everything could slip out of alignment in an instant. That’s when my heart would freeze over. That’s when I’d be left speechless and gasping. Though I would try to adapt to the change, it all soon outweighed his value to me. From “The Bite in the Apple” by Chrisann Brennan. Copyright 2013 by the author and reprinted by permission of St. Martin’s Press, LLC. It’s been a while since I joined a Blogathon but when Bubbawheat from Flights, Tights and Movie Nights came up with this superfun idea, I couldn’t resist joining in. I’m a bit late to the event, sorry Bubba! Well, the idea of the blogathon is based around actors who have appeared in more than one superhero or comic book movie as different roles. I signed up for Chris Evans not only because he’s the only comic-book superhero I’ve actually met in person, but because he’s done not one but three comic-book characters in his relatively young career. The most famous one obviously being Captain America, The First Avenger. Now, I’m not fond of the Fantastic Four movie so I picked the other comic-book character that’s not from Marvel’s canon. The Losers is not exactly a good movie, heck it actually boasts one of the lamest villains to date IMO, but Evans’ character as Jensen is actually pretty hilarious. Steve Rogers – Captain America (2012) With his boyish good looks and affable personality, Chris Evans seems to be the perfect choice for an all-American hero. He’s got the looks obviously, thanks to the endless training to create that sculpted body with massive biceps and even more massive pecks. That scene of Peggy Carter impulsively reaching out and touching his um, man boob as soon as he gets out of the vita-ray chamber is a hoot. I mean, who could blame her? But the right physique alone isn’t enough doesn’t make it perfect. Evans’ also got the right temperament and sensibility to portray the character, that altruistic nobility that comes across so naturally. Evans was convincing in portraying both sides of the character, even with the computer-generated effects to make him look like he barely weighs 90 pounds, he somehow captures the essence of who Steve Rogers is. He made us believe heroism is not just about brawn and magnitude, but it’s more about one’s integrity and character. The Capt. might be lacking the snarky quips of Tony Stark, I mean Steve is no billionaire playboy, beneath that ‘perfect specimen’ physique +worker=13 pack_row=2874 ntok=1024 reason=top_token_frac>=0.080(frac=0.089,count=91,token=) text=_mem (1GB memory) allocation gpu_mem (GPU memory) is measured in megabytes and sets the memory split between the CPU and GPU; the CPU gets the remaining memory. Minimum value is 16. If you are for example using the Raspberry Pi 3 as a gaming emulator, media player or using a desktop environment (LXDE, XFCE, Maynard, etc) then you’ll want to increase gpu_mem to at least 256. On the other hand, if you are using the Raspberry Pi as a web server, to build a drone or simply a console-based project then you should lower gpu_mem to 16. In other words, if your needs are graphical increase GPU’s memory, if not, lower it to the minimum. eg. Web server, wireless access point, firewall, weather station, etc gpu_mem=16 or for GUI usage, eg. OpenELEC, Raspbmc, RetroPie, XFCE, etc. gpu_mem=320 Raspberry Pi 3 Overclock options arm_freq – Frequency of ARM in MHz. (Raspberry Pi 3 Overclock) – Frequency of ARM in MHz. (Raspberry Pi 3 Overclock) core_freq -Frequency of GPU processor core in MHz. It has an impact on ARM performance since it drives L2 cache. -Frequency of GPU processor core in MHz. It has an impact on ARM performance since it drives L2 cache. sdram_freq -Frequency of SDRAM in MHz. -Frequency of SDRAM in MHz. over_voltage – ARM/GPU core voltage adjust. Values above 6 are only allowed when force_turbo or current_limit_override are specified (which set the warranty bit). – ARM/GPU core voltage adjust. Values above 6 are only allowed when force_turbo or current_limit_override are specified (which set the warranty bit). force_turbo – Disables dynamic cpufreq driver and minimum settings below. Voids Warranty. – Disables dynamic cpufreq driver and minimum settings below. Voids Warranty. initial_turbo -Enables turbo mode from boot for the given value in seconds (up to 60) or until cpufreq sets a frequency. Default 0 -Enables turbo mode from boot for the given value in seconds (up to 60) or until cpufreq sets a frequency. Default 0 arm_freq_min – Minimum value of arm_freq used for dynamic clocking. – Minimum value of arm_freq used for dynamic clocking. core_freq_min – Minimum value of core_freq used for dynamic clocking. – Minimum value of core_freq used for dynamic clocking. sdram_freq_min – Minimum value of sdram_freq used for dynamic clocking. – Minimum value of sdram_freq used for dynamic clocking. temp_limit – Overheat protection. Sets clocks and voltages to default when the SoC reaches this Celsius value. Setting this higher than default voids warranty. Default 85 – Overheat protection. Sets clocks and voltages to default when the SoC reaches this Celsius value. Setting this higher than default voids warranty. Default 85 disable_splash – If set to 1, avoids the rainbow splash screen on boot. – If set to 1, avoids the rainbow splash screen on boot. boot_delay – Wait for x number of seconds in start.elf before loading kernel. Default 1 – Wait for x number of seconds in start.elf before loading kernel. Default 1 gpu_mem – GPU memory in megabyte. Sets the memory split between the ARM and GPU. ARM gets the remaining memory. Raspberry Pi 3 Model B specifications A 1.2GHz 64-bit quad-core ARMv8 CPU 802.11n Wireless LAN Bluetooth 4.1 Bluetooth Low Energy (BLE) 1GB RAM 4 USB ports 40 GPIO pins Full HDMI port Ethernet port Combined 3.5mm audio jack and composite video Camera interface (CSI) Display interface (DSI) Micro SD card slot (now push-pull rather than push-push) Video +worker=14 pack_row=2913 ntok=1024 reason=too_many_urls(count=4,max=2) text=rejected President Donald Trump’s proposal to stop all abortion services in order to keep the group’s federal funding, she invoked the popular claim of the abortion lobby: “Let’s be clear, federal funds already do not pay for abortions. Offering money to Planned Parenthood to abandon our patients and our values is not a deal that we will ever accept.” However, Planned Parenthood president Cecile Richards also tweeted in response to Trump’s proposal: Planned Parenthood is proud to provide abortion—a necessary service that’s as vital to our mission as birth control or cancer screenings. https://t.co/TWGOcVjBJ4 — Cecile Richards (@CecileRichards) March 6, 2017 “Abortion is equally ‘vital to our mission’ as birth control or cancer screening,” Daleiden notes in Richards’ tweet. “So much for ‘only 3%,’” he adds, referring to Planned Parenthood’s other common claim that abortion is only 3 percent of its total activities. We've said it before & we'll say it again: The federal government does NOT cut a blank check to Planned Parenthood. https://t.co/TiC9jTxqjH pic.twitter.com/BMHtCV1FiK — Planned Parenthood Action (@PPact) March 6, 2017 CNN also reports, “Conservatives have complained that the women’s health services organization does support research they oppose,” a statement that appears to paint the recent allegations of Planned Parenthood’s sale of aborted baby body parts for profit as mere opposition to “research.” Kristan Hawkins, president of Students for Life of America, says in a statement that even the ultimate “deal-maker” Trump finds “there is no way to negotiate with Planned Parenthood,” which she describes as “a scandal-ridden organization whose very ideology is built around abortion.” “While the deal was meant to fulfill a campaign promise, pro-lifers want zero tax dollars going to Planned Parenthood,” Hawkins adds. “Abortion is their bread and butter, but a laundry list of unsavory business practices has defined them, from aiding and abetting sex traffickers to covering up child rape and abuse to over billing Medicaid by hundreds of millions of dollars. Women deserve better than Planned Parenthood.” Btw, I AM NOT A RACIST! Okay? Don't leave this video after a minute in disgust lol, it'll all get better, I swear. Presenting GradeAUnderA's new game show.....Racism Test! Ever wondered how racist you really are? ...What's that? ......You haven't? ...Oh..... Shit.... Well in case you are curious, watch this video and you will see just for yourself just how racist you are. And a quick take on the Taylor Swift song called "Wildest Dreams" and everyone saying that's racist. I've seen the video (which is a big deal for me. I never listen to new music, I think it's shit) and I don't see the big deal. Also, I will try and start uploading once a week with shorter videos or something. This video was supposed to be a quick snappy 3 minute thing but it just grew and grew. That seems to happen with every video. Follow me on Twitter! https://www.twitter.com/GradeAUnderA 9,647,809 views YOU helped fund documentaries on the Darksiders franchise, Kingdom Come: Deliverance, Battle Chasers: Nightwar, Perception and two indie startup studios, Outpost Games & Helm Systems! Continue supporting our endeavors via Patreon! Outside of documentaries, we also produce tons of written feature content, podcast shows and more! NOTE 1: All documentaries will be released digitally via YouTube for free. NOTE 2: Please see rewards chart near the bottom of this post for clarification on tiers. Want more side-features like our Bioshock vidoc? Get us to this stretch goal and we'll do a minimum of one of these for each location we visit! Here's the first one from our shoot in Boston this month! After years of running and working for traditional video game outlets, the team at Gameumentary decided we wanted to do something different. We had begun to focus primarily on feature content for OnlySP during our final few months there, telling stories +worker=13 pack_row=2929 ntok=1024 reason=punct_run>7(count=28,text=............................) text=erchio. This is the last group of the Ro16 before we have our players set for the Quarter Finals which get played out next weekend. Starbuck is the youngest player that we have in the World Championship Series coming in at only 16 has really started to make a name for himself over the last few months with his 2-0 over Grubby and 2-1 over Lucifron in the ro32, how can he perform tonight? He enters a group with the regining champion of the WCS EU, MothertruckingMMA and a scary Russian, Titan. This is going to be good a one. MMA Finally, I am super excited for MMAs games tonight, after so long down in the dumps we have a player who has reached two semi finals over the last couple of months! I managed to catch him briefly last night and the first question I asked is how is he feeling and his how is his condition, he smiled at me and said great, hes feeling really good. Remember that not only is this important for MMA in his search for a win but he is VERY close to being in the top 16 seeding for Blizzcon, a win tonight helps his cause, if he finds another Season Finals here... then he could be going back to a beautiful place, an arena full of happy memories of his glorious 4-1 victory over Mvp. His first game of the night is against Starbuck, who has displayed his ability to use weird aggressive strategies for some fast wins and as we remember the ro32, the last game from the Lucifron vs Starbuck series, he showed us he can play the game long, fighting up until he gets 3/3 upgrades and Ultralisks. The big problem with Starbuck is his experience, basically, he has none. MMA will clearly know Starbuck is going to be aiming for a cheap win somewhere in their series, Team Acer have a good setup with Cella helping out the players with giving information on their opponents and I am sure MMA will be playing very defensively tonight to start things off. If MMA doesn’t advance tonight ?!?!?! ............................ ??? Titan An interesting story for Titan, if you didn’t watch the ro32, in the winners interview we had with him he said something along these lines: “If I didn’t qualify for the the ro16 I was going to take a step back from playing StarCraft, play it as a hobby rather than my job” This is MASSIVE!! I 100% understand the reasoning behind it for Titan as well. For a long time, before WCS even went live with Season 1, Titan was practicing 10hours a day, going to the gym, eating good and working his ASS off to be one of the best. In Season 1 he failed to advance from the Ro32 and this is obviously very demoralizing when you are working very hard. In Season 2, when he advanced from the ro32, in the winners interview then, he was so happy, that his hard work had paid off and he got the chance to play in Cologne for the ro16. He almost advanced into the ro8 if it wasn’t for just one mistake against MC losing him the final map of the series going 1-2 and being eliminated. So coming into Season 3 and failing in the ro32... Makes sense now? He enters this group with a very difficult task to advance, playing against Duckdeok in his first game of the evening, a player who won his championship in WCS on PvP games pretty much. Though Duckdeok has since became a little bit predictable in his play style, Naniwa was able to finally understand how to beat him and showed that in the Season 2 finals. Has Titan prepared in a similar manner? Has Duckdeok changed up since the last time we saw him? Titan vs MMA is going to be very difficult of course, I am not sure about his game against Starbuck if they were to meet, Starbuck is a terror against Protoss but I question his performance due to lack of experience playing offline. Good luck Comrade. Duckdeok If history was to repeat itself, the reigning champion is meant to lose tonight, as our first champion Mvp was eliminated by my co-caster this evening, Grubby, in the ro16. We haven’t seen any activity from Duckdeok outside of the WCS, his last offline games were in the Season 2 Finals over a month ago. He did however beat up on TLO in the ro32, once +worker=6 pack_row=3019 ntok=1024 reason=top_token_frac>=0.080(frac=0.096,count=98,token=) text=welcome by delegates in Bournemouth as he urged them to prepare to enter another coalition in 2020 Mr Farron pictured arriving at the Bournemouth International Centre to deliver his pitch to the public - and Lib Dem activists still reeling from the disastrous general election X FACTOR IS A TERRIBLE SHOW, SAYS WANNABE POPSTAR FARRON Tim Farron said the X Factor is a 'terrible' programme, but he watches every Saturday If he had not been a politician, Tim Farron would like to have been a musician. Using his speech to introduce himself to the nation, he joked his old school friends were urging him to get their band back together. Despite boasting that he had written 'sure-fire electropop masterpieces' as a student, he admitted that his band were 'rubbish'. But he still did what many musicians trying to earn credibility do: criticise The X Factor. He said there were photos of his time in a band, but because they pre-digital 'they are so low resolution that you can't make out the eye-liner'. Mr Farron added: 'I've got a worse confession...On a Saturday night, I watch X factor...with the kids. It's a terrible programme, but strangely compelling. 'It is a desperately guilty pleasure - I have to cleanse myself by listening to Radio 6 for 2 solid hours afterwards. 'Anyhow, my mates from the band are still my mates. 'Our keyboard player rang me up a couple of weeks ago – he said, 'Tim – we should re-form, enter X factor next year'. 'I said, one: we're 45, two: I'm a bit busy, 3: we're still rubbish.' Mr Farron said that during his visit to Calais he met a 14 year-old boy who had broken both of his legs trying to board a lorry who was in a wheelchair pushed by a boy who was 11. In a striking attack on the Prime Minister, Mr Farron said that the government was 'ignoring their humanity, it was just stuck in media management mode, following not leading'. He said the government is 'still following the story' but it has changed stance after the harrowing image of three-year-old Syrian boy Aylan Kurdi, who died with his brother and mother trying to reach the Greek island of Kos, has sparked an international outcry. Mr Farron said: 'It's the body of a three year old boy face-down in the surf. And what we've had from David Cameron is a careful calibration of what it will take to manage that story, the minimum effort for the maximum headlines. 'And a policy which will not directly help a single one of the hundreds of thousands currently on the move across Europe. 'It's pitiful and embarrassing and makes me so angry.' To a standing ovation from activists, he launched a passionate attack on the Prime Minister. 'I am proud to be British and I am proud of Britain's values. 'So when Mr Cameron turns his back on the needy and turns his back on our neighbours, I want the world to know, he does not speak for me, he does not speak for us, he does not speak for Britain.' Mr Farron seized on the issue as he made his pitch to the public - and Lib Dem activists still reeling from the disastrous general election - that his party should return to government in 2020. In his speech in Bournemouth he said his party should be 'serious about power' and claimed the election of Jeremy Corbyn as Labour leader had left the Lib Dems as the only credible opposition to the Tories. 'Against all the odds, we have just been given the chance to take centre stage,' he said. The Lib Dems were reduced to a rump of just eight MPs as voters turned their back on the party after five years in power with the Tories. But Mr Farron told activists they should be prepared to return to office rather than retreat to the comfort zone of opposition. 'If others wish to abandon serious politics, serious economics, that's their lookout,' he said. 'But you can be certain that the Liberal Democrats will occupy every inch of that progressive liberal space because +worker=15 pack_row=3030 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=In part, Callahan brought in new dietitian Erika Whitman, who advised Porzingis to go full bore at breakfast as his weight declined, and to go to bed earlier. “I didn’t pay as much attention in the beginning of the season to breakfast,’’ Porzingis said. “I wanted to get to the gym. I’d eat something quick and go to work out. So now I’m getting up one hour, 112 hours earlier and having a big breakfast so I have energy for the whole day. I’m really focusing on breakfast.’’ Porzingis’ breakfast fare isn’t anything outlandish — just large portions. It helps that his parents have lived with their 20-year-old son most of his rookie season in White Plains, and his mother, Ingrida, is a noted former hoopster and cook. His parents are staying until March. “A lot of cottage cheese with fruit, then eggs, ham, toast,’’ Porzingis said. “It’s kind of like an American breakfast, but Latvian style. It’s a big meal. I don’t think other people have big breakfasts like me. “[The Knicks] wanted me to have big breakfasts, but I’m really pushing myself to eat, even when I’m not hungry, so I can have a lot of energy for the day.’’ The Knicks’ research before the draft showed Porzingis was susceptible to anemia — a condition in which the blood doesn’t have enough healthy red blood cells. He contracted anemia as a 16-year-old, when he was in the minor division of the Spanish League, because he wasn’t eating right. Porzingis said he now carries iron pills on all road trips and hasn’t developed a pronounced case since. “I was so weak and sleepy because of the blood — I wasn’t eating enough,’’ Porzingis said. “Food changed from Lativan food to Spanish food and I couldn’t adjust. I was working out a lot, [had] a growing body and I got anemia. I have a few moments when my iron levels are low, I get sleepy and as soon as that happens, I take my iron pills and I’m fine.’’ Porzingis, who clearly doesn’t want to miss a game, recently has played through a shoulder injury and a bruised foot, but some nights he’s a lot more lively than others. Porzingis revealed he played for a week with jammed index fingers on each hand that swelled up, but have since healed. Sources say his family is shocked he’s been able to battle through the ailments without missing a single game, keeping his Rookie of the Year candidacy alive. Porzingis has said he is trying to prove wrong the “durability police’’ — the ones who suggested he would be injury-prone after missing three games in preseason. “I think [my family] knows I’m able to play though pain,’’ said Porzingis, who is averaging 14 points, 7.8 rebounds and 2.0 blocks while shooting 43 percent. “There’s a lot of stuff going on. That’s why I think they’re surprised. I want to [play all 82 games]. I’m really pushing myself through all the little injuries, little things I have going on. I want to stay strong mentally and play through it and have a complete season. I think physically this is my first year, I’m trying to figure out how to keep stay fresh for every game.’’ The Knicks declined to make Whitman, the dietitian, available for comment. Even at 233 pounds, Fisher said Porzingis is fine for his rookie year. “He’s put on the amount of weight that’s good for where he is now,’’ Fisher said. “It’s always hard to hold or gain weight during the season because of the workload and how much energy you expend. It’s proportionate to your overall strength in terms of how much weight he can carry and strength ratio. He’s 20 years old, and as he physically matures, he’ll gain weight naturally. ... We’ll try to do what we need to do this summer.’’ Carmelo Anthony, who has missed four games and complained of a sore left knee Saturday, is no guarantee to play Tuesday against the Thunder at the Garden. Throwback Thursday: 1988 Honda NX250 The little Adventure Bike never got the +worker=13 pack_row=2983 ntok=1024 reason=top_token_frac>=0.080(frac=0.085,count=87,token=) text=a fully-controlled indoor environment using a system of aeroponic misting of the roots for faster harvest cycles, predictable results, food safety and less environmental impact. – A NJ indoor farmer that is marketing their technology to other prospective vertical farmers. AeroFarms grows a wide variety of leafy greens without sun or soil in a fully-controlled indoor environment using a system of aeroponic misting of the roots for faster harvest cycles, predictable results, food safety and less environmental impact. Aris – is a Dutch engineering and systems provider. Many of their projects are integrated with vision and robotics that identify, grade, sort and analyze everything from orchids to chickens, from potted plants to seedlings. Using their systems, nursery clients can then grade and robotically cut branches which can then be potted. – is a Dutch engineering and systems provider. Many of their projects are integrated with vision and robotics that identify, grade, sort and analyze everything from orchids to chickens, from potted plants to seedlings. Using their systems, nursery clients can then grade and robotically cut branches which can then be potted. ALCI Visionics & Robotics – A French integrator of vision and robotics technologies for meat and fish slicing and packaging and for nurseries and growers for potting plants and seed germination, analysis and classification for corn, rice and wheat. – A French integrator of vision and robotics technologies for meat and fish slicing and packaging and for nurseries and growers for potting plants and seed germination, analysis and classification for corn, rice and wheat. Conic Systems – a Spanish provider of greenhouse equipment including robotic and software-controlled grafting, seeding and planting systems. – a Spanish provider of greenhouse equipment including robotic and software-controlled grafting, seeding and planting systems. Demtec – A long established Belgium-based maker of a wide range of horticultural machinery including potting machines, seeders, planters and transplanters. Many of these processes have integrated industrial and mobile robots into their systems. Demtec robotics also play a big part in flat and shelf handling, packaging, palletization, and shipping. – A long established Belgium-based maker of a wide range of horticultural machinery including potting machines, seeders, planters and transplanters. Many of these processes have integrated industrial and mobile robots into their systems. Demtec robotics also play a big part in flat and shelf handling, packaging, palletization, and shipping. Egatec A/S – a Danish integrator of end-of-line packaging, boxing and palletizing systems for the ag and food processing industries. – a Danish integrator of end-of-line packaging, boxing and palletizing systems for the ag and food processing industries. Harvest Automation – a Boston-area mobile robotics provider with nursery applications for spacing, a task that involves bending over, picking up one or two containers often weighing up to 22 pounds each, walking a few steps and then bending over again to place them in a predefined pattern. The company recently divested a warehousing variation on their mobile robot to better focus on ag industry applications. – a Boston-area mobile robotics provider with nursery applications for spacing, a task that involves bending over, picking up one or two containers often weighing up to 22 pounds each, walking a few steps and then bending over again to place them in a predefined pattern. The company recently divested a warehousing variation on their mobile robot to better focus on ag industry applications. Helper Robotech – a Korean manufacturer of robotic grafting, smart seeding and other smart devices. They also make a wide range of nursery products to nurture seedlings to maturity. – a Korean manufacturer of robotic grafting, smart seeding and other smart devices. They also make a wide range of nursery products to nurture seedlings to maturity. HETO Agrotechnics – a Dutch manufacturer of horticulture machines including robotic potting systems and pick and place systems for potted plants. – a Dutch manufacturer of horticulture machines including robotic potting systems and pick and place systems for potted plants. Hortiplan – a Belgian integrator, reseller and provider of nursery equipment, supplies and mobile gully systems – which move in an automated way from the planting side to the harvesting station. Hortiplan also designs and sells lighting, irrigation and handling systems. – a Belgian integrator, reseller and provider of nursery equipment, supplies and +worker=7 pack_row=3063 ntok=1024 reason=top_token_frac>=0.080(frac=0.080,count=82,token=) text=tinctions in canon law [ edit ] Before 1983, interdicts were either personal, if applied directly to a person, wherever he was, or local, if applied directly to a locality and only indirectly to the people in that place whether permanently or only on a visit.[2] Only the Holy See was empowered to impose a general interdict on a diocese or state or a personal interdict on the people of a diocese or country, but bishops too could impose a general interdict on a parish or on the people of a parish or a particular interdict on a place (such as a church or oratory, an altar or a cemetery) or a person.[3] Effects under pre-1983 canon law [ edit ] A local interdict forbade in general the public celebration of sacred rites. Exceptions were made for the dying, and local interdicts were almost entirely suspended on five feasts of the year: Christmas Day, Easter Sunday, Pentecost, Corpus Christi and the feast of the Assumption of Mary.[4] Besides, in the case of a general local interdict, it remained permissible to celebrate in the cathedral or the only church in a town, but without any solemnity such as the ringing of bells and the playing of music, Mass, baptism, confession, and marriage. Those who were under personal interdict were forbidden to be present at any religious rite except the preaching of the word of God. While mere attendance ("passive assistance," with "assistance" being an obsolete translation of Latin adsistere/assistere ["be present"; cf. the modern Italian equivalent and its Spanish cognate asistir]) by them did not require that they be expelled, if they were well known to be under interdict they were to be prevented from taking an active part.[5] 1983 Code of Canon Law [ edit ] An interdict today has the effect of forbidding the person concerned to celebrate or receive any of the sacraments, including the Eucharist, or to celebrate the sacramentals. One who is under interdict is also forbidden to take any ministerial part (e.g., as a reader if a layperson or as a deacon or priest if a clergyman) in the celebration of the Eucharist or of any other ceremony of public worship.[6] These are the only effects for those who have incurred a latae sententiae interdict, namely, one incurred automatically at the moment of committing the offence for which canon law imposes that penalty. For instance, a priest may not refuse Communion publicly to those who are under merely automatic interdict, even if he knows that they have incurred this kind of interdict[7] - unless the cause for the interdict is known to the priest not only privately but publicly, and is persistent, in which case (though not technically by reason of the interdict) people are to be withheld Communion by force of can. 915. However, in the case of a ferendae sententiae interdict, one incurred only when imposed by a legitimate superior or declared as the sentence of an ecclesiastical court,[8] those affected are not to be admitted to Holy Communion[9] (see canon 915), and if they violate the prohibition against taking a ministerial part in celebrating the Eucharist or some other ceremony of public worship, they are to be expelled or the sacred rite suspended, unless there is a grave reason to the contrary.[6] In the same circumstances, local ordinaries and parish priests lose their right to assist validly at marriages.[10] Automatic (latae sententiae) interdict is incurred by anyone using physical violence against a bishop,[11] as also by a person who, not being an ordained priest, attempts to celebrate Mass, or who, though unable to give valid sacramental absolution, attempts to do so, or hears a sacramental confession.[12] Automatic interdict is also incurred by anyone falsely accusing a priest of soliciting sexual favours in connection with confession[13] or attempting to marry while having a perpetual vow of chastity.[14] An interdict is also the censure that canon law says should be imposed on someone who, because of some act +worker=10 pack_row=3153 ntok=1024 reason=top_token_frac>=0.080(frac=0.099,count=101,token=) text=person (so beware what you give them). Often, theNPC's will offer powerful commands that are either likely too expensive toprocure upon first meeting the character, or extremely uncommon at that pointin the game. References to Mythology and Lore As was commonplace in Square RPG's and now in many videogames, there areseveral references made to Roman, Egyptian and Norse mythology and other cultural lore. Characters Isis , a Goddess who is the living manifestation of all the pieces of magi , a Goddess who is the living manifestation of all the pieces of magi Apollo , a seemingly benevolent God who initially aids you in your quest , a seemingly benevolent God who initially aids you in your quest Venus , the vain Goddessof beauty who casts out the ugly and crippled from her city , the vain who casts out the ugly and crippled from her city Ashura , an early boss and wannabe god strengthened by the power of magi , an early boss and wannabe god strengthened by the power of magi Odin , a god who resurrects your party upon death and tests your ability tocomplete your task , a god who resurrects your party upon death and tests your ability tocomplete your task titan (male)/ titania (female), a monster class blessed with great strength (male)/ (female), a monster class blessed with great strength chimera , a monster class based on the multi-species monster of Greekmythology , a monster class based on the multi-species monster of medusa , a monster class based on the Greek myth of the Gorgon Medusa, able to turn passersby into stone with a single glance Sleipnir , a monster class based on the eight-legged horse of Norse mythology mephisto , a monster class (complete with pitchfork and pointed tail) based on the Faustian demon Mephistopheles cocatris , a monster class based on the mythological creature, cockatrice, which possessed a petrifying glare hydra , a monster class based on the multi-headed repitilian creature of Greek mythology scylla , a monster class based on the sea monster of Greek mythology (represented in the game, oddly enough, by the medusa sprite) leviathn , a monster class based on the Biblical serpent Leviathan O-bake, a monster class that is essentially a ghost, based on the shape-shifting spirits of Japanese folklore Locations Valhalla , Odin’s residence , Odin’s residence Edo, a world inspired by feudal Japan ("Edo" is the actual former name of the Japanese capital, "Tokyo") Items Gungnir , a deadly spear that can damage multipleenemies (so long as they are in the same group) at once, named after Odin's mythical spear , a deadly spear that can damage multipleenemies (so long as they are in the same group) at once, named after Odin's mythical spear Xcalibr , one of the strongest swords in the game named after King Arthur’slegendary Excalibur , one of the strongest swords in the game named after King Arthur’slegendary Excalibur Hermes boots, equippable boots that raises agility, named after the Greek messenger god boots, equippable boots that raises agility, named after the Greek messenger god Masmune , a piece of magi that is essentially a powerful katana named after the Japanese swordsmith Masamune , a piece of magi that is essentially a powerful katana named after the Japanese swordsmith Masamune Muramas , a powerful katana named after the Japanese swordsmith Muramasa , a powerful katana named after the Japanese swordsmith Muramasa Aegis , a piece of magi that covers the entire party in a protective shieldfor a single round, named after the Greek god Zeus' shield , a piece of magi that covers the entire party in a protective shieldfor a single round, named after the Greek god Zeus' shield Pegasus , apiece of +worker=4 pack_row=3020 ntok=1024 reason=top_token_frac>=0.080(frac=0.080,count=82,token=the) text=’s position had been suspended pending the outcome of the court proceedings. In the Northern Hemisphere spring officially begins at 1:32 p.m. ET on Saturday, March 20, 2010—the vernal equinox, or spring equinox (see vernal equinox pictures). But don't be fooled by the old rumor that on the vernal equinox the length of day is exactly equal to the length of night. The true days of day-night equality always fall before the vernal equinox and after the autumnal, or fall, equinox, according to Geoff Chester, a public affairs specialist with the U.S. Naval Observatory in Washington, D.C. "Exactly when it happens depends on where you are located on the surface of the Earth," he said. By the time the center of the sun passes over the Equator—the official definition of equinox—the day will be slightly longer than the night everywhere on Earth. The difference is a matter of geometry, atmosphere, and language. Geometry, Atmosphere, Language of the Vernal Equinox If the sun were just a tiny point of light and Earth had no atmosphere, then day and night would each be exactly 12 hours long on a spring equinox day. But to begin with, as seen from Earth, the sun is nearly as large as a little fingertip held at arm's length, or half a degree wide. Sunrise is defined as the moment the top edge of the sun appears to peek over the horizon. Sunset is when the very last bit of the sun appears to dip below the horizon. The vernal equinox, however, occurs when the center of the sun crosses the Equator. Plus, Earth's atmosphere bends the sunlight when it's close to the horizon, so the golden orb appears a little higher in the sky than it really is. As a result, the sun appears to be above the horizon a few minutes earlier than it really is. Therefore, on the vernal equinox day, the daylight hours are actually longer than the length of time between when the sun crosses the horizon at dawn and when the sun crosses the horizon at sunset. "Those factors all combine to make the day of the equinox not the day when we have 12 hours of light and darkness," Chester said. Vernal Equinox Special Nonetheless The length of day and night may not be equal on the vernal equinox, but that doesn't make the first day of spring any less special. The fall and spring equinoxes, for starters, are the only two times during the year when the sun rises due east and sets due west, according to Alan MacRobert, a senior editor with Sky & Telescope magazine. The equinoxes are also the only days of the year when a person standing on the Equator can see the sun passing directly overhead. On the Northern Hemisphere's vernal equinox day, a person at the North Pole would see the sun skimming across the horizon, beginning six months of uninterrupted daylight. A person at the South Pole would also see the sun skim the horizon, but it would signal the start of six months of darkness. Pope Shuffles Vernal Equinox Another equinox oddity: A rule of the calendar keeps spring almost always arriving on March 20 or 21—but sometimes on the 19th—MacRobert said. In 1582 Pope Gregory XIII established the Gregorian calendar, which most of the world now observes, to account for an equinox inconvenience. If the he hadn't established the new calendar, every 128 years the equinox would have come a full calendar day earlier—eventually putting Easter in chilly midwinter. "It begins with the fact that there is not an exact number of days in a year," MacRobert said. Before the pope's intervention, the Romans and much of the European world marked time on the Julian calendar. Instituted by Julius Caesar, the old calendar counted exactly 365.25 days per year, averaged over a four-year cycle. Every four years a leap day helped keep things on track. It turns out, however, that there are 365.24219 days in an astronomical "tropical" year—defined as the time it takes the sun, as seen from Earth, to make one complete circuit of the sky. Using the Julian calendar, the spring and fall equinoxes and the seasons were arriving 11 minutes earlier +worker=4 pack_row=3063 ntok=1024 reason=top_token_frac>=0.080(frac=0.084,count=86,token=.) text=cases the biology of how biomarkers appear in saliva, and what they mean, has not been fully explained. “The ratio of the oral level to blood level may be perfect, as in the case of alcohol,” Malamud says. “Or it may be meaningless, as is the case with glucose. You can measure glucose in an oral sample, but it has no correlation to the level in the blood.” Focusing on conditions like gum disease or oral cancer reduces those hurdles. One team at UCLA has had success in detecting signs of oral cancer by analyzing the RNA found in saliva. Within a few years, these seven groups of researchers hope to build fully automated, tabletop-size diagnostic machines that can be stationed in a clinic, a dentist’s office, or even at home. At that scale, analysis can happen more quickly and cheaply. With fewer jabs in the arm, no more throat scrapings, and fewer urine samples, saliva could end up a patient’s hero. Welcome to the The Great Soviet Encyclopedia Wiki Edit The Great Soviet Encyclopedia is, according to itself, the first Marxist-Leninist general-purpose encyclopedia and one of the world’s largest modern encyclopedias. This wiki is an attempt to display the encyclopedia in a more accessible and navigable format. The Great Soviet Encyclopedia Edit (GSE), the first Marxist-Leninist general-purpose encyclopedia; one of the world’s largest modern encyclopedias. Published in Moscow by the Soviet Encyclopedia Publishing House. The first edition of the GSE was issued under a resolution (1925) of the Central Executive Committee of the Presidium of the USSR during the period 1926–47, in 66 volumes and a pressrun of 50,000–80,000. It contains 65,000 articles, 12,000 illustrations, and more than 1,000 maps. The edition contains 4,400 author’s sheets of text (1 author’s sheet = 40,000 characters). The editors of the sections and authors of the major articles included highly prominent Soviet scholars and state leaders—for example, A. N. Bakh, A. S. Bubnov, N. N. Burdenko, V. G. Fesenkov, M. V. Frunze, I. M. Gubkin, I. E. Grabar’, V. V. Kuibyshev, G. M. Krzhizhanovskii, A. V. Lunacharskii, V. A. Obruchev, M. N. Pokrovskii, N. A. Semashko, V. R. Vil’iams, and K. E. Voroshilov. The editor in chief was Academician O. Iu. Shmidt (1924–41). The second edition of GSE was published under a resolution of the Council of Ministers of the USSR (February 1949, published in the newspaper Kul’tura i zhizri on Feb. 20, 1949) during the period 1950–58 in 51 volumes (the 51st is a supplementary one) and a pressrun of 250,000–300,000. The edition contains 4,900 author’s sheets of text. In addition to extensive, comprehensive, long survey articles (for example, articles on the Union republics, foreign states, and the sciences), the GSE includes a large number of medium-length and short articles. This made it possible (with an average article length of 2,000 characters) to print some 100,000 articles in the second edition. More than 40 percent of the articles are accompanied by a suggested bibliography, primarily in the language of the original (in 35 languages of the peoples of the USSR and in 25 foreign languages). The second edition has 40,852 illustrations and 2,362 maps. In 1960 a subject and name alphabetical index to the GSE came out in two volumes. Highly prominent Soviet scholars took part in producing the second edition of the GSE—N. N. Anichkov, I. P. Bar-din, A. A. Blagonravov, E. A. Chudakov, A. A. Grigor’ev, B. V. Ioganson, A. N. Kolmogorov, F. V. Konstantinov, A. A. Mikhailov, A. I. Oparin, K. V. Ostrovitianov, N. M. Strakhov, S. P. Tolstov, V. V. Vinogradov, B. M. Vul, E. M. Zhukov, and many others. The editors in chief +worker=15 pack_row=3156 ntok=1024 reason=top_token_frac>=0.080(frac=0.089,count=91,token=) text=— like the cellulose in vegetables — with the exact proportions dependent on your diet. Your poop also contains small amounts of your own tissue: intestinal lining cells that were sloughed off during digestion. And, of course, there's water. 2) Poop is brown because of dead red blood cells and bile Your feces' color is the result of a chemical called stercobilin. That chemical ends up in your poop in two ways: it is byproduct of the hemoglobin in broken-down red blood cells, and it also comes from bile, the fluid secreted into your intestines to help digest fat. Chutkan says that in a person with an optimally-functioning digestive system, "the ideal stool is a deep chocolatey color — like melted chocolate." Without stercobilin present, poop would be a pale grey or whitish color. We know this because people who have liver disease or clogged bile ducts (causing little or no bile to get to their intestines) have light-colored feces, a condition known as acholic stool. Other colors of poop can be a sign of other conditions. Yellow stool can be the result of a parasitic infection, or pancreatic cancer. Black or dark red poop can be an indication of bleeding in the upper GI tract — or of eating beets. Green feces can also be the sign of an infection. If your poop is blue, it's probably just because of blue food coloring. 3) Men and women poop differently Because of anatomical differences, men and women's GI tracts work a little differently. These differences are so significant, in fact, that Chutkan says she could perform a colonoscopy and correctly guess the patient's sex without knowing it beforehand. For starters, women have wider pelvises than men, as well as extra internal organs (such as the uterus and ovaries) in the region. As a result, their colons hang a bit lower than men's, and are a bit longer: on average, by ten centimeters. Finally, men have more rigid abdominal walls that help push food through the GI tract more effectively. All this, Chutkan says, "makes the passage of stool much more challenging for women." Food takes longer to transit through most women, she says, making them more prone to bloating. Men, on the other hand, are generally much more regular. 4) The ideal poop is a "continuous log" — and sinks to the bottom of the toilet Although Chutkan cautions that there's no single "ideal poop," she notes that there are some characteristics that are a sign of a healthy digestive system and microbiome. There are some doctors that say pooping three times a week is sufficient, but Chutkan says that you should probably make a bowel movement every day — assuming you're eating food every day. (In some cases, irregularity can actually be caused by extreme stress, as hormones like adrenaline and cortisol can slow down the digestive process.) Under ideal conditions, she says, "it should be very easy to pass — almost effortless." And it should take the form of a continuous log or two, with a diameter similar to that of a circle you can make with your index finger and thumb. Finally, poop should sink, not float. Floating stool is usually a sign of poor nutrient absorption or excessive gas. Of course, poops come in all shapes and sizes — as shown in the Bristol stool scale, created by the University of Bristol's Ken Heaton, at right — but Chutkan says the ideal poop is a three or four on the scale. If your poop isn't a perfect, easy, continuous log, it's not necessarily a sign that you're sick. But it may be a sign that you're not eating enough fiber, or that your gut microbiome isn't in great shape. 5) Gut bacteria and plant fiber are essential for good poop The key to good poops, Chutkan says, is straightforward: "What really makes a good stool is large amounts of the indigestible plant matter that feed gut bacteria." This plant fiber — mostly cellulose — also directly adds bulk to poop, so a plant-heavy diet is critical for nice, solid bowel +worker=14 pack_row=3119 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=wasn’t. Anyway, it’s how some have characterized bitcoin’s future – the pogs of money! A big trading and investment bitcoin site based in Hong Kong has come out to be nothing more than a classic Ponzi scheme when almost $400 million of U.S. dollars went missing. OPERATING SYSTEM DEVELOPER Google has slated the release of its open source Chrome OS for later this year. The Internet search giant announced an autumn 2010 release date for Chrome. According to Reuters, Google gave the date at a press event at the Computex trade show in Taiwan. Google is aiming to take a huge bite out of Microsoft's market share using Chrome as an alternative to the Vole's pervasive Windows OS. "Chrome OS is one of the few future operating systems for which there are already millions of applications that work," said Sundar Pichai, Google's head of Chrome development. "You don't need to redesign Gmail for it to work on Chrome. Facebook does not need to write a new app for Chrome." Pichai also said Google is putting Chrome on laptops only. "We will be selective on how we come to market because we want to deliver a great user experience," he said. "We're thinking on both the hardware and software levels." Microsoft must be quaking in its boots. Having a heavyweight like Google lined up to take away serious market share from a software monopoly is a big threat. Google has the resources and infrastructure to deliver Chrome. The Vole has taken pot shots at Google ever since it announced that it was developing Chrome. We reported in April that Microsoft had the gall to suggest that Google's Chrome disrespects users' privacy. Then it said software developers would have to build different versions of their applications to run under Chrome. However, Pichai rubbished the claim, saying they wouldn't because of Chrome's core architecture. It's no wonder that Google let it be known earlier this week that it is banning its employees from using Windows. Black Republicans consider voting for Obama WASHINGTON (AP) Black conservative talk show host Armstrong Williams has never voted for a Democrat for president. That could change this year with Barack Obama as the Democratic Party's nominee. "I don't necessarily like his policies; I don't like much that he advocates, but for the first time in my life, history thrusts me to really seriously think about it," Williams said. "I can honestly say I have no idea who I'm going to pull that lever for in November. And to me, that's incredible." Just as Obama has touched black Democratic voters, he has engendered conflicting emotions among black Republicans who are far fewer in numbers. They revel over the possibility of a black president but wrestle with the thought that Obama does not sit beside them ideologically. "Among black conservatives," Williams said, "they tell me privately, it would be very hard to vote against him in November." Perhaps sensing the possibility of such a shift, Republican presidential candidate John McCain has made some efforts to lure black voters. He recently told Essence magazine that he would attend the annual convention of the National Association for the Advancement of Colored People, a leading civil rights group, next month, and he noted that he recently traveled to Selma, Alabama, scene of seminal voting rights protests in the 1960s, and "talked about the need to include 'forgotten Americans."' Still, McCain has a tall order in winning black votes, no doubt made taller by running against a black opponent. In 2004, blacks chose Democrat John Kerry over President George W. Bush by an 88% to 11% margin, according to exit polls. J.C. Watts, a former Oklahoma congressman who once was part of the Republican House leadership, said he is thinking of voting for Obama. Watts said he is still a Republican, but he criticizes his party for neglecting the black community. Black Republicans, he said, have to concede that while they might not agree with Democrats on issues, at least that party reaches out to them. "And Obama highlights that even more," Watts said, adding that he expects Obama to take on issues such as poverty and urban policy. "Republicans often seem indifferent to those things." Likewise, retired Gen. Colin Powell, who became the country's first black secretary of state under President George W. Bush, said both candidates are qualified and that he will not necessarily vote for the Republican. "I will vote for the individual I think that brings the best set of tools to the problems of 21s +worker=5 pack_row=3150 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=cells play ball and keep the evolutionary interests of the group above their own reproductive success. Understanding cancer is therefore intertwined with understanding our some of our earliest multicellular ancestors and the unique evolutionary challenges inherit in living in groups. Cancer is but another example of the power of evolution to provide insight on human health. Beyond just understanding the “nuts-and-bolts”, evolution gives us a scientific basis to explain the “whys”, “whens” and “what-fors” of human biology. The evolution of the multicellular organism was obviously a critical point in the history of our biology. The genes that evolved during this time were selected to police individual cells for the public good. When these genes are altered the carefully coordinated balance of different levels of evolutionary interest can come undone with devastating consequences. It seems cancer too can not be understood outside of the light of evolution. -END Domazet-Loo, T., & Tautz, D. (2010). Phylostratigraphic tracking of cancer genes suggests a link to the emergence of multicellularity in metazoa BMC Biology, 8 (1) DOI: 10.1186/1741-7007-8-66 Queller, D. (2003). Single-Gene Greenbeard Effects in the Social Amoeba Dictyostelium discoideum Science, 299 (5603), 105-106 DOI: 10.1126/science.1077742 Velicer, G., Kroos, L., & Lenski, R. (2000). Developmental cheating in the social bacterium Myxococcus xanthus Nature, 404 (6778), 598-601 DOI: 10.1038/35007066 My Secret Santa gift arrived tastefully wrapped, eye appealing and a pleasure to receive. Enclosed was a beautiful card with handwritten wishes from my Secret Santa, Julie. Your greeting was so friendly and heartfelt I feel like we've been friends for years. Your thoughtful gifts could not have been MORE PERFECT FOR ME!!! A beautiful handmade scarf to warm me in winter, (LOVE the colors that go with everything) a cookbook by a LOCAL Southern author with LOTS of History that I'm itching to page through and cook from... my favorite candy, RASPBERRIES and a lovely handmade necklace from the museum at the Hermitage, the home of President Andrew Jackson near where my Secret Santa lives. You are AWESOME SWEET SECRET SANTA! I was surprised and LOVED the cookbook that arrived "under separate cover." I was totally shocked by the additional gift the next day. This was one of the BEST and MOST THOUGHTFUL GIFTS of Christmas. Thank you & MERRY CHRISTMAS new Friend! Donald Trump third in STL Tea Party poll; Ted Cruz on top (KTVI-ST. LOUIS) Donald Trump is surging in GOP presidential polls ahead of next week’s first Republican debate among the party’s presidential candidates, but the controversial businessman finished third in a sampling of conservative activists, according to a survey released Saturday by the St. Louis Tea Party Coalition. In email polling of 122 coalition members conducted July 26 through July 29, Texas Senator Ted Cruz came in first at 29 percent, followed by Wisconsin Governor Scott Walker at 27 percent, with Trump at 19 percent. The rest of the crowded GOP field finished in single digits. You can see the entire poll here. The poll also asked respondents who they would support if their first choice was not on the ballot. Governor Walker finished first at 28 percent and Senator Cruz at 19 percent In the growing field of candidates for Missouri Governor, Lt. Governor Peter Kinder topped the field at 42 percent, followed by NAVY Seal Eric Greitens and Businessman John Brunner, who both had 24 percent support. The entire poll had a margin of error of 8 percent. Financial analysts and industry experts have been expecting Volkswagen to begin selling assets to help cope with the cost of its diesel emissions cheating scandal. The penalty for its deception may have already reached $24.2 billion, and German lawsuits could tack on another $8 billion. However, Europe’s largest automaker says it’s not interested in selling off properties to recoup losses associated with the scandal. It has another plan to rake in the cash. VW says it’s more interested in focusing on the shift into electrification and mobility services. Cutting up assets for sale is not a good long-term plan for the company, according to corporate strategy head Thomas Sedran. While that may not be his personal assertion, it is +worker=4 pack_row=3149 ntok=1024 reason=sentence_count<2(count=1) text=all the people working behind the scenes during Election 64 (BBC1, 1964) 31 The ‘Election Night Special’ sketch on Monty Python’s Flying Circus (BBC1, 1970) 32 Michael Murray (Robert Lindsay) simultaneously beset by nervous twitches, an angry neglected wife and a Dr Who fan convention in the GBH episode ‘Message Sent’ (Channel 4, 1991) 33 Chris Evans, Zig and Zag trying and failing to demonstrate how to make the world’s quickest chocolate cake on The Big Breakfast (Channel 4, 1992) 34 Pet Shop Boys performing Can You Forgive Her? on Top of the Pops (BBC1, 1993) 35 The first appearance of the dead body of a “demon” in Quatermass and the Pit (BBC1, 1958) 36 Bob Monkhouse coolly and expertly dealing with a malfunctioning draw machine on The National Lottery Live (BBC1, 1996) 37 Jamie MacDonald (Paul Higgins) splenetically berating Ollie Reeder (Chris Addison) for making fun of Al Jolson in The Thick Of It (BBC4, 2007) 38 Kenny Everett producing an oversized “READY” stick before bending Terry Wogan’s microphone on Blankety Blank (BBC1, 1979) 39 Monique (Angela Richards) singing If This Is The Last Time I See You in Secret Army (BBC1, 1979) 40 Stephen Fry “killing” Hugh Laurie in a musical misunderstanding over the lid on jar of coffee in A Bit of Fry and Laurie (BBC2, 1990) 41 Gonch Gardner trying to undercut the school canteen by selling toast in the Grange Hill playground (BBC1, 1985) 42 Nationwide staging a studio-bound summer fair to celebrate the Queen’s Silver Jubilee (BBC1, 1977) 43 The Beatles performing Hey Jude on Frost on Sunday (ITV, 1968) 44 George Malone (Peter Kerrigan) confessing “I can’t believe that there’s no hope” in Boys from the Blackstuff (BBC2, 1982) 45 A “fight” breaking out among, in Des Lynam’s words, “our highly professional team” during the opening seconds of an edition of Grandstand (BBC1, 1983) 46 Damon Grant (Simon O’Brien) breaking down on completing his YTS only to find nobody will take him on for work in Brookside (C4, 1986) 47 Clive James’s Review of the 80s, culminating in our host jiving to a performance by “woman of the decade” Kylie Minogue (BBC1, 1989) 48 Margaret Thatcher giving her verdict on record releases, including a favourable review of Beautiful Imbalance by Thrashing Doves, on Saturday Superstore (BBC1, 1987) 49 The opening sequence of the BBC’s World Cup 90 coverage, and Des Lynam’s subsequent patronage of Pavarotti – “Cue Luciano!” (BBC1, 1990) 50 Hilda Ogden (Jean Alexander) breaking down on opening the spectacle case of her recently deceased husband Stan in Coronation Street (ITV, 1984) 51 Adam Carter (Rupert Penry-Jones) being blown up while driving a car bomb away from a Remembrance Sunday ceremony in Spooks (BBC1, 2008) 52 Larry Grayson attempting – and failing – to master disco dancing on The Generation Game (BBC1, 1979) 53 One half of Bucks Fizz performing Run For Your Life in Jersey while the other half performs it in London at exactly the same time on Saturday Superstore (BBC1, 1983) 54 The BBC screening an emergency edition of Dad’s Army when a power failure hit part of Television Centre during Euro 2000 (BBC1, 2000) 55 The Special AKA, along with The Beat and Elvis Costello, performing Free Nelson Mandela on The Tube (C4, 1984) 56 Wing Commander Marsh (Michael Bryant) feigning mental illness to be repatriated out of Colditz, but ending up genuinely insane (BBC1, 1972) 57 Adam Curtis saying the words “but this was a fantasy” on The Power of Nightmares (BBC2, 2004) 58 Bob Monkhouse announcing the end of the power workers’ strike live during an edition of The Golden Shot (ITV, 1970) 59 Jim fixing it for a child to appear in an episode of Terry and June, accosting Terry on a cross-channel ferry concerning the +worker=6 pack_row=3221 ntok=1024 reason=top_token_frac>=0.080(frac=0.102,count=104,token=,) text=MO; Andy Berke, Chattanooga, TN; Ivy Taylor, San Antonio, TX; Lydia Mihalik, Findlay, OH; Kirk Caldwell, Honolulu, HI; Kathy Sheehan, Albany, NY; Marni Sawicki, Cape Coral, FL; John Marchione, Redmond, WA; Pauline Cutter, San Leandro, CA; Robert Garcia, Long Beach, CA; Hardie Davis, Jr., Augusta, GA; Ed Lee, San Francisco, CA; Bob Buckhorn, Tampa, FL; Chin Ho Liao, San Gabriel, CA; Kitty Piercy, Eugene, OR; John Sawyer, Santa Rosa, CA; Karen Freeman-Wilson, Gary, IN; Jim Kenney, Philadelphia, PA; Steve Hogan, Aurora, CO; Jennifer Roberts, Charlotte, NC; Mitch Landrieu, New Orleans, LA; George Van Dusen, Skokie, IL; Nina Jonas, Ketchum, ID; Larry Wolgast, Topeka, KS; Marilyn Strickland, Tacoma, WA; Mary Salas, Chula Vista, VA; Betsy Hodges, Minneapolis, MA; Betsy Price, Fort Worth, TX; Mark Stodola, Little Rock, AR; Adrian Mapp, Plainfield, NJ; Frank Cownie, Des Moines, IA; Alan Arakawa, Maui, HI; Helene Schneider, Santa Barbara, CA; Ethan Strimling, Portland, ME; Paul Dyster, Niagara Falls, NY; Steve Adler, Austin, TX; Timothy McDonough, Hope, NJ; Jon Mitchell, New Bedford, MA; Eric Garcetti, Los Angeles, CA; Toni Harp, New Haven, CT; Dewey Bartlett, Jr., Tulsa, OK; William Capote, Palm Bay, FL; Jorge Elorza, Providence, RI This article tagged under: Infrastructure Mayors Cities By headcount, the North Korean military is one of the largest in the world. And much of its power relies on how it is seen . National Geographic's David Guttenfelder has the rare credentials of being a western photographer allowed inside the so-called Hermit Kingdom. His mobility in the country is often restricted, but not as much as you’d think, especially when it comes to the military. “You see them everywhere, they’re not just the country’s defense, they’re part of North Korea’s entire identity,” he says. Soldiers do development projects, they build infrastructure, and they keep life in Pyongyang running smoothly under the country’s regime. Guttenfelder’s access also included invitations to the annual Mass Games performance and the highly choreographed military demonstrations of goose-stepping soldiers and artillery on parade. Everyone at the event has a role to play, including the spectators, who use color flip-books to make grand mosaics from the stands. The images are usually tributes to the country’s leaders, or simply, the military at large. Louis van Gaal has the pedigree to succeed at Manchester United, says Sir Alex Ferguson Sir Alex Ferguson talks to Jim White about current Man Utd manager Louis van Gaal - watch the full interview on Sky Go & the Sky Sports for iPad app Sir Alex Ferguson talks to Jim White about current Man Utd manager Louis van Gaal - watch the full interview on Sky Go & the Sky Sports for iPad app Sir Alex Ferguson says he loves Louis van Gaal's press conferences and believes the Dutchman has the pedigree to be a success at Manchester United. Van Gaal, who has won titles in Holland, Spain and Germany, led United back into the Champions League during his first season in charge and is now hoping to deliver the club a 21st Premier League title before his contract expires in 2017. Ferguson, speaking to Sky Sports' Jim White in an exclusive 30-minute interview, thinks Van Gaal's time with the likes of Bayern Munich and Barcelona will give him the confidence bring silverware back to Old Trafford. "Every manager is different anyway," Ferguson told Sky Sports. "We all have our different philosophies and beliefs. We have different ways of doing things, the way we pick teams and how we look at the qualities of players. Louis van Gaal took on Sir Alex Ferguson as Bayern Munich boss in 2010 "Louis has got a great background with Bayern Munich and Barcelona. He's got the pedigree there's no doubt about that. "I love his press conferences," he +worker=9 pack_row=3251 ntok=1024 reason=top_token_frac>=0.080(frac=0.080,count=82,token=) text=who faced off against Dirtbag Dan and Soul Kahn at the height of the GT era. DIRTBAG DAN & SOUL KAHN vs. FRESCO & REAL DEAL (2009) Both the California and Florida divisions seemed to embrace the format, as a number of large 2-on-2 battles were going down at the “mega-events” at that time on the coasts. But the most-viewed GT-era doubles battle remains Soul Khan and DNA squaring off against Rone and ZM. SOUL KHAN & DNA vs. RONE & ZM (2010) KOTD's 2-on-2 Grand Prix In 2011, Canada’s King of The Dot held the much-discussed 2-on-2 Grand Prix Tournament in locations across the country. The bracket was stacked, and featured a wide variety of styles with heavyweight American teams matched up against many of Canada’s favorites (including HFK/Charron, who made a polarizing run). REAL DEAL & FRESCO vs. CHARRON & HFK (2011) While being highly successful, many fans felt the judging became an issue in this tournament. The above-mentioned team of Charron and HFK were involved in a heavily debated (at least in some circles) decision against Real Deal and Fresco that outraged some fans. In addition to that, perhaps one of the most argued-about judgments of all time happened in Toronto during the "Flatline" event, when the Canadian team of Porich/Diaz prevailed over a heavily favored The Saurus/Illmaculate in a heated finale. The video currently has 2,400 dislikes on YouTube, about three times the number of likes. THE SAURUS & ILLMACULATE vs. PORICH & DIAZ (2011) KOTD also put out some incredible one-off doubles battles, including this one featuring four of the league's future hall of famers. Bender & Loe Pesci vs. PORICH & Kid Twist (2010) And this classic from the first "World Domination" event. Tricky P & Charron vs. Soul Khan & Kap Kallous (2010) International Standouts It wasn’t just the North American leagues getting in on the action. England's Don't Flop, Sweden’s Basementality Battles, The Philippine’s Fliptop and Australia’s Got Beef all held various forms of 2-on-2s and introduced new elements that only heightened the popularity of the format. GOT BEEF — JUSTICE & 360 vs. MADNESS & THE SAURUS (2010) Don’t Flop has long held occasional 2-on-2s, and they also threw a tournament (2010’s “To The Test”) which produced some entertaining footage. DON'T FLOP — OSHEA & INNUENDO vs. CHRONICLE & PAMFLIT (2010) BASEMENTALITY — DIZASTER & OKWERDZ vs. SHAZAAM & NILS (2011) Some people may view 2-on-2s as a gimmick. even referring to them as “extracurricular.” While this casual attitude has lead to varying success, they have proven to be big business when everything comes together. FlipTop, which boasts the most-viewed battle rap channel in the world, has what may be the highest viewed battle of all time at over 21,000,000 views. FLIPTOP — LOONIE & ABRA vs. SHEHYEE & SMUGGLAZ (2012) Pairing a league's top emcees has worked stateside too, with QOTR netting one of their top-viewed battles with this doubles match. QOTR – PHARA FUNERAL & SHOONEY DA RAPPER vs. TORI DOE & DON LADYII (2012) The Shufflo Effect Perhaps the biggest contributor to the recent success of 2-on-2 battles comes from Don’t Flop and the duo known as “Shufflo.” England’s Shuffle-T and Marlo and their unique chemistry and wit took the battle world by storm after a string of rock solid performances starting basically from their debut in 2013. The level of entertainment they brought along with their ability to incorporate props and other non-traditional battling tactics gave fans something different, and encouraged promoters to find other doubles teams to take them +worker=15 pack_row=3239 ntok=1024 reason=top_token_frac>=0.080(frac=0.088,count=90,token=.) text=loss of a sense of identity seemed most likely to lead to conformity. Both this and Milgram’s study introduced the notion of social influence, and the ways in which this could be observed/tested. Summary Key Features Objective Measurement Nurture Nomothetic Basic Assumptions All behavior occurs in a social context, even when nobody else is physically present. A major influence on people's behavior, thought processes and emotions are other people and the society they have created. Strengths Social psychology provides clear predictions. This means that explanations can be scientifically tested and support with evidence. Emphasizes objective measurement Many experiments to support theories Methodology / Studies Experimental Method Questionnaires Milgam Stanford Prison Experiment Areas of Application Social Influence: Conformity Social Influence: Obedience Self-concept Discrimination Aggression Relationships Limitations Underestimates individual differences Ignores biology (e.g. testosterone) Provides only 'superficial snapshots of social processes' (Hayes, 1995) References Allport, F. H. (1920). The influence of the group upon association and thought. Journal of Experimental Psychology, 3(3), 159. Allport, F. H. (1924). Response to social stimulation in the group. Social psychology, 260-291. Allport, F. H. (1942). Methods in the study of collective action phenomena. The Journal of Social Psychology, 15(1), 165-185. Bandura, A., Ross, D., & Ross, S. A. (1963). Vicarious reinforcement and imitative learning. The Journal of Abnormal and Social Psychology, 67(6), 601. Baron, R. A., Byrne, D., & Suls, J. (1989). Attitudes: Evaluating the social world. Baron et al, Social Psychology. 3rd edn. MA: Allyn and Bacon, 79-101. Festinger, L., Schachter, S., & Back, K. (1950). Social processes in informal groups. Haney, C., Banks, W. C., & Zimbardo, P. G. (1973). Study of prisoners and guards in a simulated prison. Naval Research Reviews, 9(1-17). Klineberg, O. (1940). The problem of personality. Krewer, B., & Jahoda, G. (1860). On the scope of Lazarus and Steinthals “Völkerpsychologie” as reflected in the. Zeitschrift für Völkerpsychologie und Sprachwissenschaft, 1890, 4-12. Lewin, K., Lippitt, R., & White, R. K. (1939). Patterns of aggressive behavior in experimentally created “social climates”. The Journal of Social Psychology, 10(2), 269-299. Mcdougall, W. (1908). An introduction to social psychology. Londres: Methuen. Milgram, S. (1963). Behavioral study of obedience. The Journal of Abnormal and Social Psychology, 67(4), 371. Murchison, C. (1935). A handbook of social psychology. Murphy, G., & Murphy, L. B. (1931). Experimental social psychology. Sherif, M. (1935). A study of some social factors in perception. Archives of Psychology (Columbia University). Tajfel, H., Billig, M. G., Bundy, R. P., & Flament, C. (1971). Social categorization and intergroup behavior. European journal of social psychology, 1(2), 149-178. Triplett, N. (1898). The dynamogenic factors in pacemaking and competition. American journal of Psychology, 9(4), 507-533. Weiner, B. (1986). An attributional theory of motivation and emotion. New York: Springer-Verlag. How to reference this article: McLeod, S. A. (2007). Social psychology. Retrieved from https://www.simplypsychology.org/social-psychology.html Starting the new year off with a bang, the Financial Times has just published a dispatch by Erik Prince, notorious founder and former CEO of the private security contracting firm Blackwater, the outfit responsible for projects such as the 2007 Nisour Square massacre of Iraqi children and other civilians. The company has undergone a series of rebranding efforts over the years as an apparent means of distancing itself from overtly toxic connotations. Prince’s Financial Times bio discreetly identifies him +worker=15 pack_row=3246 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=decision on the (overall) budget today,” he told councillors, adding that taking a rushed vote five days before Christmas does not allow taxpayers proper time to learn what they’re paying for. Budget committee chair Gael Miles repeatedly interjected as Bryden and another resident suggested the budget vote was being rushed. “There has been no haste,” she told Bryden. “Where this notion of haste comes from, I don’t know.” “Of course it was done in haste,” Bryden told the Star. “Why else did they defer the vote on the hospital levy? The public doesn’t have any clue about what was being pushed through to pay for the hospital, and the city manager said public engagement should occur. I think it’s the same for the overall budget.” Councillor Elaine Moore, who had expressed concern earlier in the week about the rushed budget process, particularly the proposed hospital levy, thanked Corbett for his recommendation to wait. “There is a huge educational component to this,” Moore told council. “That’s the value of having public meetings. People will want to know what a (levy) means for them.” NASA Astronaut Cady Coleman performs tasks in laboratory at the International Space Station as part of the Integrated Cardiovascular investigation – a study evaluating cardiac health in space, including the effect of long-duration spaceflight on heart shape and form. When astronauts spend long periods of time at zero gravity in space, their hearts become more spherical and lose muscle mass, a new study finds, which could lead to cardiac problems. The physiological changes have implications for how manned missions to Mars and other extended trips in space could affect astronauts' health, according to research presented March 29 at a meeting of the American College of Cardiology in Washington, D.C. "The heart doesn't work as hard in space, which can cause a loss of muscle mass," study leader Dr. James Thomas, Moore Chair of Cardiovascular Imaging and Lead Scientist for Ultrasound at NASA, said in a statement. "That can have serious consequences after the return to Earth, so we're looking into whether there are measures that can be taken to prevent or counteract that loss." [The Human Body in Space: 6 Weird Facts] Predicted change in heart shape at end-diastole on Earth (green) and in microgravity (red). (Image: Dr. Chris May) Given these effects, knowing what amount and kind of exercise could keep astronauts healthy will be important for ensuring astronauts remain healthy on long space missions. The same exercise regimens could help people on Earth who have severe physical limitations or heart failure to stay healthy, Thomas said. In the study, Thomas and his team trained 12 astronauts to image their hearts using an ultrasound machine on the International Space Station. Images were taken before, during and after the astronauts' time in space. The images revealed the heart becomes 9.4 percent more spherical in space. Mathematical models predicted the change almost exactly, Thomas said, adding that these models will give doctors a better understanding of heart conditions on Earth. The spherical shape of the heart could mean the heart is functioning less efficiently. The condition appears to be temporary — the astronauts' hearts returned to a normal elongated shape after they return to Earth. Scientists don't know if the change has any long-term effects, however. The researchers are now adapting their models for conditions such as coronary artery disease (the most common type of heart disease and leading cause of death worldwide), hypertrophic cardiomyopathy (thickening of the heart muscle that limits its ability to pump blood) and diseases of the heart valves. Follow Tanya Lewis on Twitter and Google+. Follow us @Spacedotcom, Facebook and Google+. Original article on Space.com. Enlarge By Torsten Blackwood, AFP/Getty Images This aerial photo taken on October 2, 2009 shows the half of the town (L) of Lalomanu in ruins up to the church (C). On October 4, 2009 mourners gathered to pray at the church for the tsunami victims in Samoa. Ferocious waves were unleashed by a 8.0 magnitude undersea quake which rattled the region on September 29. WELLINGTON, New Zealand (AP) The tsunami that killed more than 200 people in the Samoan islands and Tonga earlier this year towered up to 46 feet (14 meters) high — more then twice as tall as most of the buildings it slammed into, scientists said Friday +worker=13 pack_row=3210 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=police and the district governor said Sunday. Nguyen Yaing Ngoc, 28, drove his motorcycle into the back of a car along National Road 2 in Chak Angre Loeu commune at around 9:45 p.m. The car continued on, leaving the young man injured in the street, where he was then set upon by an angry mob of about six people, Huot Vanna, deputy commune police chief, said. “Nguyen Yaing Ngoc died after the group of people beat him on the head and face,” Mr. Vanna said, adding that the group had been angry that his crashed motorcycle was blocking the road. “The fighting started when someone shouted ‘Yuon fight with Khmer!’ and then the mob beat him to death,” he added. Nguyen Yaing Ngoc died at the scene, he said. One man, named as Von Chanvutha, 50, was subsequently arrested for allegedly instigating the racial violence, Mr. Vanna said. “We detained him and sent him to police for questioning,” he said. Mr. Vanna said villagers had told police the victim was a Vietnamese national, and that police had not yet been in touch with the man’s family. Chak Angre Krom commune chief Chea Sokhai said the victim’s body had already been cremated at the local pagoda. Meanchey district governor Kuoch Chamroeun said he was aware of the mob killing and said racism was behind it because the killers had shouted epithets about the victim’s ethnic background as they set upon him. “It is a mob killing and due to discrimination, as the mob killed the victim after calling him a ‘yuon,’” a term for Vietnamese people that can be derogatory in some contexts, Mr. Chamroeun said. Chan Soveth, deputy head of monitoring for rights group Adhoc, decried the killing and called for a thorough investigation by the police. “They should not have killed the victim for being Vietnamese or any other nationality,” he said. 2014, The Cambodia Daily. All rights reserved No part of this article may be reproduced in print, electronically, broadcast, rewritten or redistributed without written permission. When Paramount Vantage - the filmmaker-forward arm of Paramount Pictures (formerly known as Paramount Classics) - folded in '13 (after its ultimate release, Nebraska, netted six Oscar nominations, including Best Director and Picture), the studio scene lost a major wing through which "art house" movies could find an audience. Throughout their fourteen years of existence (since Classics first put out Trekkies in '99), the company evolved from distributing headier genre fare (such as Brad Anderson's The Machinist ['04]) to bona fide Academy Award contenders like Alejandro González Iárritu's Babel ('06). Vantage's most prolific year occured in '07, when they not only put out Sean Penn's Into the Wild (which earned Hal Holbrook a well-deserved Best Supporting Actor nod), but also Paul Thomas Anderson's There Will Be Blood, which contained what is arguably Daniel Day-Lewis' most iconic turn. But the big winner that year was the Coen Brothers' No Country For Old Men - a sparse, stripped down iteration of Cormac McCarthy's already sparse, stripped down existential crime novel - which won Best Picture, Director(s), Adapted Screenplay, and Javier Bardem defeated Holbrook in the Supporting column (though his cold-blooded specter of death, Anton Chigurh, may even edge out Daniel Plainview in the recognizability department). Many cinephiles (not to mention critics) often argue that the Academy never gets it right, holding up numerous instances that back up their claim (hello Goodfellas losing to Dances With Wolves in '91). However, No Country besting There Will Be Blood (in a field that also included Atonement and Michael Clayton) just felt correct. One could obviously still prefer one picture over the other, yet it was a difficult choice to argue against. No Country For Old Men is undoubtedly one of the Coens' bleakest genre exercises; a story so soaked in elemental atmosphere that even though the Brothers' regular musical collaborator, Carter Burwell, is again credited with the original score, +worker=12 pack_row=3385 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=," pointed out Dr Grandes. So this research has revealed that the CB1 cannabinoid receptors in the mitochondria regulate the memory processes by modulating mitochondrial energy metabolism. Furthermore, although cannabinoid by-products have a well-known therapeutic potential, their use is limited by the significant adverse effects that emerge when acting on CB1 receptors, including memory loss. The results of this research suggest that "a selective intervention on specific CB1 cannabinoid receptors located in the brain in certain specific neurone compartments could be of interest with a view to developing new therapeutic tools based on the most effective and safest cannabinoids in the treatment of certain brain diseases," explained Dr Grandes. "This research is the result of 6 years' work in which 28 researchers have participated. In our case it would not have been possible without the funding received from the UPV/EHU, the Basque Government and Spanish institutions, which have placed their trust in us even during these years of tremendous cutbacks for research; this is something I recognise and which I am grateful for," concluded Pedro Grandes. Pedro Grandes has recently been Visiting Professor at the University of Victoria, British Columbia, Canada, where he has been doing research work and teaching students of medicine and post-graduate students. ### Bibliographical reference Etienne Hebert-Chatelain, Tifany Desprez, Román Serrat, Luigi Bellocchio, Edgar Soria-Gomez, Arnau Busquets-Garcia, Antonio Christian Pagano Zottola, Anna Delamarre, Astrid Cannich, Peggy Vincent, Marjorie Varilh, Laurie M. Robin, Geoffrey Terral, M. Dolores Garca-Fernández, Michelangelo Colavita, Wilfrid Mazier Filippo Drago, Nagore Puente, Leire Reguero, Izaskun Elezgarai, Jean-William Dupuy, Daniela Cota, Maria-Luz Lopez-Rodriguez, Gabriel Barreda-Gómez, Federico Massa, Pedro Grandes, Giovanni Bénard, Giovanni Marsicano A cannabinoid link between mitochondria and memory. Nature. DOI:10.1038/nature20127 If the Leica Guy (Matthew B. Harrison) had any doubt as to the marrying potential of his wife-to-be, it surely evaporated when he saw the wedding gift she got for him: a custom made Leica ring, modeled on a lens aperture ring. The detail is astonishing, from the Leica typeface through to lens model (50mm Noctilux-M 0.95) to the depth-of-field markings on the ring's "barrel." The ring was commissioned and made by jeweler Gaelen in British Columbia, Canada, who makes custom engagement rings for people of taste. And what did the Leica Guy buy for his lovely bride? Like, some watch or whatever. I'm totally jealous of this ring, although I'm even more jealous of the cameras the couple packed when they flew off to Italy for their honeymoon. What did they take? A pair of M9-Ps, of course. The Leica Guy got married [The Leica Guy via PetaPixel and Leica Rumors] (REUTERS/Las Vegas Sun/Steve Marcus) Mitt Romney's presidential campaign continues to hit bumps with the music industry. Another band is putting the clamps on a Republican candidate playing its song at a public event. Dee Snider, lead singer of the hair metal group Twisted Sister, told Talking Points Memo in a statement he "emphatically denounce[s]" vice presidential hopeful Paul Ryan's use of the band's 1984 song "We're Not Gonna Take It" at a Pennsylvania rally yesterday. Making light of the one-time personal trainer's rigorous workout routine, Snider added, "There is almost nothing [Ryan] stands for that I agree with except the use of the P90X." Last week, the Romney campaign ran into a similar issue after playing the song "Panic Switch" by Silversun Pickups at an event. The band's lawyer issued a ceast-and-desist letter, even including that it would be "harmful" if the band's fans thought the group was endorsing Romney. Rage Against the +worker=2 pack_row=3403 ntok=1024 reason=top_token_frac>=0.080(frac=0.090,count=92,token=,) text=s.' Interstellar approached the $450 million worldwide, grossing an estimated $15.1 million in its third outing for a North American cume of $120.7 million and global total of $449.7 million. Both Big Hero 6 and Interstellar continued to enjoy nice holds. Internationally, Christopher Nolan's Interstellar raked in another $70 million from 64 territories, pushing its foreign total to $329 million, 13 percent of ahead of Gravity and and 10 percent of Nolan's Inception. After topping the domestic chart last weekend, Dumb and Dumber To fell a steep 62 percent in North America, grossing $13.8 million for a domestic total of $57.5 million. In its eighth week in release, David Fincher's box-office sensation Gone Girl rounded out the top five, ending Sunday with north of $156 million domestically. Stephen Hawking's 5 Most Mind-Blowing Quotes Focus Features' Stephen Hawking biopic The Theory of Everything did impressive business as it expanded into 140 theaters in its third weekend, grossing $1.5 million to land at No. 10. The awards contender's location average was $10,714. Here are the estimated top 10 films for the weekend of Nov. 21-23 at the domestic box office: Title, Weeks in Release/Theater Count, Studio, Weekend Total, Percentage Change, Cume 1. The Hunger Games: Mockingjay — Part 1, 1/4,151, Lionsgate, $123 million 2. Big Hero 6, 3/3,650, Disney, $20.1 million, -42%, $135.7 million 3. Interstellar, 3/3,415, Paramount/Warner Bros., $15.1 million, -46%, $120.7 million 4. Dumb and Dumber To, 2/3,188, Universal/Red Granite, $13.8 million, -62%, $57.5 million 5. Gone Girl, 8/1,609, Fox/New Regency, $2.8 million, -38%, $156.8 million 6. Beyond the Lights, 2/1,766, Relativity, $2.6 million, -58%, $10.1 million 7. St. Vincent, 7/1,707, The Weinstein Co., $2.4 million, -38%, $36.6 million 8. Fury, 6/1,702, Sony/QED, $1.9 million, -49%, $79.2 million 9. Birdman, 7/862, Fox Searchlight/New Regency, $1.9 million, -25%, $14.4 million 10. The Theory of Everything, 3/140, Focus Features, $1.5 million, +104%, $2.8 million Nov. 23, 11:30 a.m. Updated with Interstellar international numbers To arrive at the end of Caitlin Sweet's The Pattern Scars has the feel of awakening from a dream -- one of doing terrible things. It is a novel of intense contradiction: a lush, delicately imagined nightmare; a horror novel about intimacy. Paradox is the heart of The Pattern Scars. Serene, lyrical language dances the reader into a theater of blood and staring corpses. The spirited heroine is a puppet for dark forces. A Taliesin-like figure, revered in court, is a sadistic killer. Profound intimacy is cemented through psychic torture and debasement. And in the most concrete, most visual manifestation of paradox, beauty is transformed into a boiled corpse, bones laid out on red velvet. In the fevered, haunting world conjured here, "nothing gold can stay" is not simply a theme -- it is an injunction, a command that applies directly to almost anything that might be thought good, noble or beautiful. Instead there is the blood, the blood, and the blood -- recounted with exquisite imagery. For this book is beautiful even as it sickens -- the paradox again. Caitlin Sweet's shimmering prose, already apparent in her debut novel A Telling of Stars, reaches new heights in The Pattern Scars, which is so replete with luminous images and an evocative atmosphere that even now, a week later, these sensations still haunt my memory as if they had been real, a country I visited and would return to again. The internal life of Nola, a heroine who is independent, likeable and tortured beyond endurance, is rendered in subtle shades of acute psychological insight. In another novel, she would be a delight to watch triumph over any opposition that came her way, through her wit and courage. But in this one, the darkness marshaled against her from the age +worker=15 pack_row=3485 ntok=1024 reason=top_token_frac>=0.080(frac=0.083,count=85,token=) text=Taupe (my old-school love). There’s also a new shade — deep, pearly, plummy black Stroke of Midnight — to accent the other colors. If you’re new to MAC, this is a great way to get a bunch of staple shades in one fell swoop. As for the rest of the collection, like the Lipsticks, Lipglasses, Fluidlines, Pigments, Glitter and Mascara, I like them all...although I’m a little iffy on the Irridescent Pressed Powder and Beauty Powder. I think they could both stand to be a little softer and less gritty. You’ll be able to click your way to a happily ever after with the 17-piece MAC Cinderella collection starting February 26, when it arrives online at maccosmetics.com, or wait to see it in person March 5 through April 16 in stores and on counters. The 17-piece MAC Cinderella collection includes.. Lustre Lipstick in Free as a Butterfly , a semi-sheer golden nude ($17.50 US, $21 CDN) , a semi-sheer golden nude ($17.50 US, $21 CDN) Lustre Lipstick in Royal Ball , a fleshy pink ($17.50 US, $21 CDN) , a fleshy pink ($17.50 US, $21 CDN) Lipglass in Happily Ever After , a cool milky pink with bluish pearl ($16.50 US, $20 CDN) , a cool milky pink with bluish pearl ($16.50 US, $20 CDN) Lipglass in Glass Slipper , a light milky pink with pinkish pearl ($16.50 US, $20 CDN) , a light milky pink with pinkish pearl ($16.50 US, $20 CDN) Eyeshadow X 6 in Stroke of Midnight ($44 US, $53 CDN) ($44 US, $53 CDN) Phloof, a frosty off white Quarry, a matte plummy brown Omega, a matte muted beige-taupe Vapour, a velvety peachy pink with violet pearl Stroke of Midnight, a volvety black plum with pearl Satin Taupe, a frosty taupe with silver shimmer MAC Studio Eye Gloss in Lightly Tauped , a light beige gloss with pearl ($23 US, $28.50 CDN) , a light beige gloss with pearl ($23 US, $28.50 CDN) MAC Studio Eye Gloss in Pearl Varnish , a white gloss with pearl ($23 US, $28.50 CDN) , a white gloss with pearl ($23 US, $28.50 CDN) MAC Fluidline in Little Black Bow , a gray with silver pearl ($17.50 US, $21 CDN) , a gray with silver pearl ($17.50 US, $21 CDN) MAC Fluidline in Macroviolet , a deep smokey violet with red pearl ($17.50 US, $21 CDN) , a deep smokey violet with red pearl ($17.50 US, $21 CDN) MAC Iridescent Pressed Powder in Coupe D’Chic , a light golden peachy with golden shimmer ($28 US, $33 CDN) , a light golden peachy with golden shimmer ($28 US, $33 CDN) MAC Beauty Powder in Mystery Princess , a matte pinkish beige with silver shimmer ($28 US, $33 CDN) , a matte pinkish beige with silver shimmer ($28 US, $33 CDN) MAC Glitter in Reflects Pearl , a fine white glitter with pearly sheen ($23 US, $28 CDN) , a fine white glitter with pearly sheen ($23 US, $28 CDN) MAC Pigment in Evil Stepmother , a blackened plum with plum pearl ($24 US, $29 CDN) , a blackened plum with plum pearl ($24 US, $29 CDN) MAC Pigment in Pretty It Up , an olive with pearlized pigments ($24 US, $29 CDN) , an olive with pearlized pigments ($24 US, $29 CDN) MAC Studio Fix Lash in Boldblack ($19 US, $22 CDN) ($19 US, $22 CDN) 217 Blending Brush +worker=1 pack_row=3452 ntok=1024 reason=unk_count>1(count=2,token=,id=2) text=buying this picture, as the artist is poor, young and struggling,” and the patron will drop it quicker than the proverbial hot potato. And they will not learn. Since Quinn, there has been one man willing to gamble on genius. He has bought low and sold high through several collections. All of the others buy only in the established fields. Stieglitz will tell you with tears in his eyes that twenty years ago he could not sell a Cezanne for fifteen dollars apiece. Try and buy one now for $18,000. Weyhe will tell you of trying to sell Zorn's etchings for fifteen dollars with no takers. The same men will now buy Zorn for several hundred and even the same etching. But they will not buy a Wickey, a Ganso, or any of the many newcomers. No, these are bought by painters and students of small means. Click here to read the rest of the piece in the New Yorker‘s archives. Excerpt from lecture notes, circa 1932: Enlarge By Pat Sullivan, AP BP CEO Tony Hayward, standing in the BP command center, updates reporters on efforts to clean up the catastrophic oil leak off the Louisiana coast Thursday, June 3, 2010 in Houston. HOUSTON (AP) BP is already fighting an oil gusher it can't contain and watching its mighty market value wither away. Its own bumbling public-relations efforts are making a big mess worse. Not only has it made a series of gaffes — none greater than the CEO's complaint that "I'd like my life back" — the company hasn't even followed its own internal guidelines for damage control after a spill. Executives have quibbled about the existence of undersea plumes of oil, downplayed the potential damage early in the crisis and made far-too-optimistic predictions for when the spill could be stopped. BP's steadiest public presence has been the ever-present live TV shot of the untamed gusher. What BP has lacked, crisis management experts say, has been much of a show of human compassion. "All crises are personal," said Richard Levick, who runs a public relations firm, Levick Strategic Communications, that advises companies. "Action and sacrifice is absolutely critical." The best move for BP's image, of course, would be to stop the leak. That has proved difficult enough, with one fix after another failing and estimates of the severity of the spill growing by the week. Failing a solution, Daniel Keeney, president of a Dallas-based PR firm, suggested putting CEO Tony Hayward in a hard hat and life vest, helping crews contain and clean up the spill. "You want to get him right in the thick of things, even if he looks somewhat uncomfortable doing it," Keeney said. Levick suggested BP could have cut gas prices at its stations along the Gulf Coast — a show of financial solidarity. BP has taken a stab at soothing angry Americans, airing a slick, multimillion-dollar national TV spot this week in which Hayward pledges: "We will make this right." Hayward also promised BP would clean up every drop of oil and "restore the shoreline to its original state." President Obama said the money spent on the ads should have gone to cleanup and compensating devastated fisherman and small business owners. And even those efforts violate the company's own prescription for damage control. Its own spill plan, filed last year with the federal government, says of public relations: "No statement shall be made containing any of the following: promises that property, ecology or anything else will be restored to normal." On top of everything else, BP can't figure out what to say about its dividend. Lawmakers in the U.S. insist the company must look after the devastated people of the Gulf before paying its shareholders. But in Britain, legions of retirees count on the steady payouts. And earlier this week when Wall Street freaked out over the prospect of billions of dollars in BP liabilities and sent its stock to its lowest point since the mid-1990s, the company response was positively tone-deaf. "The company is not aware of any reason which justifies this share price movement," the company said early Thursday, after its stock was hammered on New York and European exchanges. Almost from the beginning, BP has been as unable to control its public message as it has the spill itself. Hayward was ridiculed for telling reporters "I'd +worker=1 pack_row=3515 ntok=1024 reason=top_token_frac>=0.080(frac=0.095,count=97,token=,) text=one of the regions with the greatest dynamism in the world.” That word integration is pregnant with meaning for committed globalists. World Bank economist Dominic Ruiz Devesa has approvingly noted that the TTIP objective is total “integration” of the United States and the European Union, not merely economic and trade cooperation. “Transatlantic economic integration, though important in itself, is not the end,” says Dr. Devesa. Rather, he claims, “economic integration must and will lead to political integration, since an integrated market requires common institutions producing common rules to govern it.” That is precisely the subversive process that has been used in Europe, over the past six decades, to incrementally undermine the national sovereignty of the individual EU member states and transfer political and economic power to the Eurocracy in Brussels. Dr. Devesa and other globalist architects and cheerleaders intend to use the new TPP/TTIP “trade” agreements to take the EU process global. The TTIP involves negotiations between the United States and the European Union, which represents 28 member states. The TPP currently involves 12 nations — Australia, Brunei, Canada, Chile, Japan, Malaysia, Mexico, New Zealand, Peru, Singapore, Vietnam, and the United States. But as we have reported previously, the TPP is actually intended as an interim arrangement, on the road to an expanded Free Trade Area of the Asia Pacific (FTAAP) that would include all 21 nations of the grouping known as the Asia-Pacific Economic Cooperation (APEC). That includes China and Russia. This is not a secret; we have quoted many of the leading lights of the TPP stating this matter-of-factly to audiences of fellow globalists. But of course, they don’t mention this when addressing the general public. This economic and political integration process is a very important reason why both of these agreements are referred to as “partnerships.” They are not about “free trade” and increasing our exports; they deal with a multitude of issues — from alternative energy, global warming, sustainable development, and immigration, to homeland security, global military intervention, copyright enforcement, Internet control/censorship — and much more. As we have reported in these pages previously, the website of the U.S. trade representative lists the following as some of the areas that are being negotiated in the secret TTIP conferences: “Agricultural Market Access, Competition, Cross-Border Services, Customs and Trade Facilitation, Electronic Commerce and Telecommunications, Energy and Raw Materials, Environment Financial Services, Government Procurement, Intellectual Property Rights, Investment, Labor, ... Rules of Origin, Sanitary and Phytosanitary (SPS) Measures, Sectoral Annexes/Regulatory Cooperation, Small- and Medium-Sized Enterprises, State-Owned Enterprises, Technical Barriers to Trade (TBT), Textiles, Trade Remedies.” Each of those areas is packed with possibilities for incredible harm for America’s prosperity, liberty, security, and stability. And while the architects of these pacts have had years to work in secrecy, members of Congress are to be expected to carefully sift, analyze, and understand the texts in all their nuance, in the matter of a few weeks? Amid all of their other daily distractions? In the face of high-pressure campaigns from the White House, Wall Street, and special interests claiming that failure to pass will result in loss of jobs and economic calamity? Organized Confusion Working in tandem with the Obama administration is a high-powered lineup of business and financial elites: the U.S. Chamber of Commerce, European-American Business Council, Global Business Dialog, Transatlantic Policy Network, Business Roundtable, Trade Benefits America Coalition, National Association of Manufacturers, Business Coalition for Transatlantic Trade, Council of the Americas, National Foreign Trade Council — and more. Among the deep-pocket corporate members/supporters of these groups are Goldman Sachs, CitiBank, AT&T, Boeing, Caterpillar, eBay, Sony, Disney, FedEx, General Electric, Honeywell, IBM, Intel, Microsoft, Procter & Gamble, UPS, Walmart, Daimler, Deere & Company, Apple, Archer Daniels Midland, Dow Chemical, DuPont, Exxon Mobil, Toyota, Volvo, and Xerox. Providing intellectual ammunition for the TPP/TTIP integration efforts is a profusion of globalist think tanks, funded by the same corporate backers. Led by the Council on Foreign Relations, they includes the Peterson Institute for International Economics, Aspen Institute, Brookings Institution, Carnegie End